2013-08-21 4 views
2

Я написал программу для отправки писем, но не знаю, почему я получаю сообщение об ошибке.Java отправить сообщение электронной почты, Получение ошибки

Просьба помочь мне.

Вот мой код:

import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.AddressException; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 



public class EmailTest { 

    static Properties mailServerProperties; 
    static Session getMailSession; 
    static MimeMessage generateMailMessage; 

    public static void main(String args[]) throws AddressException, MessagingException { 
     generateAndSendEmail(); 
     System.out.println("\n\n ===> Your Java Program has just sent an Email successfully. Check your email.."); 
    } 

    public static void generateAndSendEmail() throws AddressException, MessagingException { 


     System.out.println("\n 1st ===> setup Mail Server Properties.."); 
     mailServerProperties = System.getProperties(); 
     mailServerProperties.put("mail.smtps.host", "smtpout.secureserver.net"); 
     mailServerProperties.put("mail.smtp.auth", "true"); 

     System.out.println("Mail Server Properties have been setup successfully.."); 


     System.out.println("\n\n 2nd ===> get Mail Session.."); 
     getMailSession = Session.getDefaultInstance(mailServerProperties, null); 
     generateMailMessage = new MimeMessage(getMailSession); 
     generateMailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]")); 
     generateMailMessage.addRecipient(Message.RecipientType.CC, new InternetAddress("[email protected]")); 
     generateMailMessage.setSubject("TEST"); 
     String emailBody = "TEST BODY" + "<br><br> DFKSDL, <br>JDSKJFDS"; 
     generateMailMessage.setContent(emailBody, "text/html"); 
     System.out.println("Mail Session has been created successfully.."); 


     System.out.println("\n\n 3rd ===> Get Session and Send mail"); 
     Transport transport = getMailSession.getTransport("smtp"); 
     // Enter your correct gmail UserID and Password 
     transport.connect("smtpout.secureserver.net", "[email protected]", "password"); 
     transport.sendMessage(generateMailMessage, generateMailMessage.getAllRecipients()); 
     transport.close(); 
    } 
} 

Я получаю сообщение об ошибке. Имя пользователя и пароль, и все правильно, но я получаю эту ошибку:

1st ===> setup Mail Server Properties.. 
Mail Server Properties have been setup successfully.. 


2nd ===> get Mail Session.. 
Mail Session has been created successfully.. 


3rd ===> Get Session and Send mail 
Exception in thread "main" com.sun.mail.smtp.SMTPSendFailedException: 550 <[email protected]> Sender Rejected - MAIL FROM must be a valid domain. 
; 
    nested exception is: 
    com.sun.mail.smtp.SMTPSenderFailedException: 550 <[email protected]> Sender Rejected - MAIL FROM must be a valid domain. 

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108) 
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609) 
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117) 
    at EmailTest.generateAndSendEmail(EmailTest.java:50) 
    at EmailTest.main(EmailTest.java:20) 
Caused by: com.sun.mail.smtp.SMTPSenderFailedException: 550 <[email protected]> Sender Rejected - MAIL FROM must be a valid domain. 

    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1616) 
    ... 3 more 

Я не знаю, почему, имя пользователя @ partik-ПК он помещает мое имя компьютера после имени пользователя !! Я не знаю почему. Кроме того, как я могу прикрепить файл? Пожалуйста, помогите мне. Заранее спасибо!

+0

жаль, что я не понимаю !! не могли бы вы объяснить мне еще раз! – user2704140

+0

Я пишу адрес электронной почты с доменом !! !! ( – user2704140

ответ

0

Вы должны включить "из" части:

generateMailMessage.setFrom(new InternetAddress("[email protected]", "Example.com Admin")); 

Чуть ниже generateMailMessage = new MimeMessage(getMailSession);

+0

Я знаю, на самом деле я поставил свой адрес электронной почты в офисе !! Я изменил его в вопросе !! Пожалуйста, помогите мне thansk !! – user2704140

+0

Да :), но вы должны принять его в свои коды . Конечно, вы не будете использовать переменную msg, например. –

+0

Я добавляю эту строку !! все еще получаю ошибку, где мне нужно добавить эти строки? Я думаю, что я добавляю эту строку в другое место !! Пожалуйста, помогите мне! Thansk !! :) – user2704140

2

Используйте метод setFrom, чтобы установить отправителя, а также.

+0

Мне нужно добавить «addRecipient (Message.RecipientType rt, String arg1);»? – user2704140

+0

Нет, вам нужно установить адрес 'FROM', используя метод' setFrom'. Если вы этого не сделаете, Java использует ваше имя пользователя и домен по умолчанию. Вот почему вы видите 'username @ partik-pc' как адрес' FROM'. Вы, кажется, не в домене, поэтому имя домена - это имя вашей машины. –

2

Ваше сообщение об ошибке: Отправитель отклонен - ​​ПОЧТА ОТ должен быть действительным доменом.

Попробуйте установить поле От: MimeMessage.setFrom(Address ...)

3

Вы должны добавить mail.from свойство с действительным адресом электронной почты, который принимается почтовым сервером:

mailServerProperties.put("mail.from", "[email protected]"); 

Или вам нужно явно установить от адреса:

generateMailMessage.setFrom("[email protected]"); 

Смотрите также пример на api of JavaMail

+0

Спасибо! Я боролся с этим проблема все утро. Достаточно странно, что я отправлял электронные письма из учетной записи Gmail и не получал эту ошибку. Но сегодня я перешел на мой адрес электронной почты для домена godaddy и получил эту ошибку. Спасибо! – Khon

3

Попробуйте этот код:

public void sendMessageToUser(){ 

    String msgTitle = "Title"; 
    String msgBody = "msgBody"; 
    String userEmail = "[email protected]"; 
    final String username = "username"; 
    final String password = "password"; 

    Properties prop = new Properties(); 
    prop.put("mail.smtp.auth", "true"); 
    prop.put("mail.smtp.starttls.enable", "true"); 
    prop.put("mail.smtp.host", "smtp.your.post"); 
    prop.put("mail.smtp.port", "your port"); 

    Session session = Session.getInstance(prop, new Authenticator(){ 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
    }); 

    try{ 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("FROM ME")); 
     message.addRecipient(Message.RecipientType.TO, new InternetAddress(userEmail)); 
     message.setSubject(msgTitle); 
     message.setText(msgBody); 

     Transport.send(message); 

    } catch (MessagingException ex){ 
     //Error 
    } 
} 
+0

Я пробовал! !! получить любую ошибку, но она didn; t отправить письмо, а также. Пожалуйста, помогите мне !! Спасибо! – user2704140

+0

@ user2704140 Вы меняете свойства в моем примере кода? Это 'prop.put (" mail.smtp.host "," smtp. your.post "); prop.put (" mail.smtp.port "," ваш порт ");' необходимо изменить :) –

+0

prop.put ("mai l.smtp.порт "," ваш порт "), а как насчет этой линии? Ваш порт? – user2704140

Смежные вопросы