我一直在嘗試使用javamail api發送電子郵件。來自smtp服務器(smtp.live.com)的調試顯示爲550 5.3.4未採取請求操作;要繼續發送消息,請登錄您的帳戶。通過Javamail發送電子郵件
它似乎創建的消息很好,但不允許它發送。任何想法爲什麼?
try
{
// Setup properties for e-mail server
Properties props = System.getProperties();
props.put("mail.smtp.host", mConfig.getEmailHost());
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "587");
// Get a Session object
Session session = Session.getInstance(props, new MyAuthenticator());
session.setDebug(true);
Transport transport = session.getTransport("smtp");
// Create message
MimeMessage message = new MimeMessage(session);
// Add the to/from fields
message.setFrom(new InternetAddress(mFromAddr, mFromName));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(mToAddr));
if (mCCAddrs != null)
{
for (int i=0; i<mCCAddrs.length; i++)
message.addRecipient(Message.RecipientType.CC, new InternetAddress(mCCAddrs[i]));
}
// Add Subject
message.setSubject(mEmailSubject);
// Setup multipart message for including the attachment
Multipart multipart = new MimeMultipart();
// Create message body
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(mEmailBody);
multipart.addBodyPart(messageBodyPart);
if (mAttachmentName != null)
{
// Create message attachment
BodyPart messageAttachmentPart = new MimeBodyPart();
messageAttachmentPart.setDataHandler(new DataHandler(new ByteArrayDatasource(data)));
messageAttachmentPart.setFileName(mAttachmentName);
multipart.addBodyPart(messageAttachmentPart);
}
// Send message
message.setContent(multipart);
transport.connect(mConfig.getEmailHost(), mConfig.getEmailUser(), mConfig.getEmailPassword());
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (Exception ex)
{
ex.printStackTrace();
throw new Exception("Failed to send e-mail: " + ex.getMessage());
}
`
我已經有了,私有類MyAuthenticator擴展身份驗證 { 公衆的PasswordAuthentication的getPasswordAuthentication(){ 返回 新的PasswordAuthentication(mConfig.getEmailUser(),mConfig.getEmailPassword()); } } – AC3112 2013-02-20 12:36:07
您是否爲'emailUser','emailPassword'調試了'mConfig'值。當驗證者被創建時它們是否存在? – Perception 2013-02-20 12:38:03
我已經改變了我的每個會話的會話= Session.getInstance(道具,新javax.mail.Authenticator(){ 保護的PasswordAuthentication 的getPasswordAuthentication(){ 返回新的PasswordAuthentication(mConfig.getEmailUser(),mConfig.getEmailPassword() ); } });我仍然得到同樣的錯誤。 – AC3112 2013-02-20 12:43:48