2015-06-19 22 views
5

üzerinden anonim posta göndermek için doğrulanmadı Office365 SMTP kullanarak e-posta göndermek için java programım (google'dan kopyalandı) var, bir java programı olarak çalışıyor ama bu java programını web'de jar dosyası olarak dağıttığımda Bir web uygulamasının -inf/lib ve jsp yöntemini çağırmak, aşağıdaki hatayı atıyor: javax.mail.SendFailedException: Gönderme başarısız oldu; iç içe istisna: javax.mail.MessagingException: 530 5.7.57 SMTP; İstemci, MAIL FROMjavax.mail.MessagingException: 530 5.7.57 SMTP; Müşteri MAIL FROM

sırasında anonim posta göndermek için doğrulanmadı. Birisi bu konudaki görüşlerini paylaşabilir.

java kodu:

import java.util.Properties; 

import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

import org.apache.log4j.Logger; 

public class SendEmailUsingSMTP { 


    public static boolean sendEmail(String toAddress, String fromAddress, String userName, String userPassword,String smtpHost, String portNumber, String emailSubject,String emailBody) { 
     // Recipient's email ID needs to be mentioned. 

     Logger log = Logger.getLogger(SendEmailUsingSMTP.class); 
     log.info("toAddress : "+toAddress); 
     log.info("fromAddress : "+fromAddress); 
     log.info("userName : "+userName); 
     log.info("userPassword : "+userPassword); 
     log.info("smtpHost : "+smtpHost); 
     log.info("portNumber : "+portNumber); 
     log.info("emailSubject : "+emailSubject); 
     log.info("emailBody : "+emailBody); 

     String to = toAddress; 

     // Sender's email ID needs to be mentioned 
     String from = fromAddress;//change accordingly 
     final String username = userName;//change accordingly 
     final String password = userPassword;//change accordingly 

     // Assuming you are sending email through relay.jangosmtp.net 
     String host = smtpHost; 

     Properties props = new Properties(); 

     props.put("mail.smtp.auth", "true"); 
     props.put("mail.smtp.socketFactory.fallback", "false"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.smtp.socketFactory.port", portNumber); 
     props.put("mail.smtp.host", host); 
     props.put("mail.smtp.port", portNumber); 

     // Get the Session object. 
     SMTPAuthenticator authenticator = new SMTPAuthenticator(username, password); 
     props.put("mail.smtp.submitter", authenticator.getPasswordAuthentication().getUserName()); 
     Session session = Session.getInstance(props, authenticator); 


     try { 
     // Create a default MimeMessage object. 
     Message message = new MimeMessage(session); 

     // Set From: header field of the header. 
     message.setFrom(new InternetAddress(from)); 

     // Set To: header field of the header. 
     message.setRecipients(Message.RecipientType.TO, 
     InternetAddress.parse(to)); 

     // Set Subject: header field 
     message.setSubject(emailSubject); 

     // Now set the actual message 
     message.setText(emailBody); 

     // Send message 
     Transport.send(message); 

     System.out.println("Sent message successfully...."); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    return true; 
    } 
} 
+0

smtpHost, portNumber Kullanıyorum String smtpHost = "smtp.office365.com"; \t Dize portNumber = "587"; – Jay

+0

Tam olarak aynı isuse karşı karşıyayım ... –

cevap

3
o benim için çalışıyor gibi, aşağıdaki yapılandırma ile deneyebilirsiniz

:

"mail.smtp.starttls.enable":"true"

Ayrıca, kullanılan konak:

host = "Outlook.office365.com"

Umut Bu size veya başka birine yardımcı olur.

+0

Bunu denedim. Ancak aynı istisna tekrar geliyor 530 5.7.57 SMTP; Müşteri MAIL FROM sırasında anonim posta göndermek için doğrulanmadı – apm

0

smtp.starttls.enable ayarını true ve ana bilgisayara smtp.office365.com olarak ayarlamak benim için benzer sorunu çözdü.

props.put("mail.smtp.auth",true); 
props.put("mail.smtp.starttls.enable",true); 
props.put("mail.smtp.host", host); 

ev sahibi: smtp.office365.com ve Hesabımdan e-posta göndermiş olabilir

Ben senin kod yalnızca bu 3 özellikleri kullanarak bunu test ettik.

bütün işlevi:

public static boolean sendEmail(String toAddress, String fromAddress, String userName, String userPassword,String smtpHost, String emailSubject,String emailBody) { 
     // Recipient's email ID needs to be mentioned. 


     String to = toAddress; 

     // Sender's email ID needs to be mentioned 
     String from = fromAddress;//change accordingly 
     final String username = userName;//change accordingly 
     final String password = userPassword;//change accordingly 

     // Assuming you are sending email through relay.jangosmtp.net 
     String host = smtpHost; 

     Properties props = new Properties(); 

     props.put("mail.smtp.auth",true); 
     props.put("mail.smtp.starttls.enable",true); 
     props.put("mail.smtp.host", host); 

     // Get the Session object. 
     SimpleMailAuthenticator authenticator = new SimpleMailAuthenticator(username, password); 
     Session session = Session.getInstance(props, authenticator); 


     try { 
     // Create a default MimeMessage object. 
     Message message = new MimeMessage(session); 

     // Set From: header field of the header. 
     message.setFrom(new InternetAddress(from)); 

     // Set To: header field of the header. 
     message.setRecipients(Message.RecipientType.TO, 
     InternetAddress.parse(to)); 

     // Set Subject: header field 
     message.setSubject(emailSubject); 

     // Now set the actual message 
     message.setText(emailBody); 

     // Send message 
     Transport.send(message); 

     System.out.println("Sent message successfully...."); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    return true; 
    } 

ve

class SimpleMailAuthenticator extends Authenticator { 


    String userName; 
    String password; 
    PasswordAuthentication authentication; 

    public SimpleMailAuthenticator(String userName,String password) { 
     super(); 
     this.userName = userName; 
     this.password = password;   
     authentication = new PasswordAuthentication(userName, password); 
    } 

    @Override 
    public PasswordAuthentication getPasswordAuthentication() { 
     return authentication; 
    } 


} 
0

message.setHeader aşağıda X-Mailer ayarlayın doğrulayıcı ("X-Mailer", "Başvurunuz adı") ;

İlgili konular