私は、多数の引数を受け取る単純なメール送信者クラスを作成しようとしています。これらのクラスを使用すると、Exchange 2010サーバーを使用して電子メールが送信されます。認証などがうまくいくように見えますが、実際にコードが電子メールを送信しようとしているときは、次の例外が発生しています(私は思っています)。私は、認証が機能していることを確認して、セッションから戻ってくるトランスポートを取得しますが、それでも失敗します。誰かが私が間違っているか行方不明にしているかのようなものを流すことはできますか?ありがとう。JavaMail - javax.mail.MessagingException
例外:
javax.mail.MessagingException: [EOF]
at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1481)
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1512)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1054)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:634)
at javax.mail.Transport.send0(Transport.java:189)
at javax.mail.Transport.send(Transport.java:140)
at com.ri.common.mail.util.MailSender.sendHTMLEmail(MailSender.java:75)
at com.ri.common.mail.util.MailSender.main(MailSender.java:106)
関連するコード:
import java.util.Properties;
import javax.mail.Authenticator;
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;
public class MailSender
{
public static void sendHTMLEmail(String fromEmailId, String toEmailId, String host, String hostUserName,
String hostPassword, String mailSubject, String mailBody)
{
// Get system properties.
Properties props = System.getProperties();
// Setup mail server
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
final String hostUName = hostUserName;
final String hPassword = hostPassword;
Authenticator authenticator = new Authenticator()
{
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(hostUName, hPassword);
}
};
// Get the default Session object.
Session session = Session.getDefaultInstance(props, authenticator);
try
{
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
// Set From: header field of the header.
message.setFrom(new InternetAddress(fromEmailId));
// Set To: header field of the header.
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmailId));
// Set Subject: header field
message.setSubject(mailSubject);
// Send the actual HTML message, as big as you like
message.setContent(mailBody, "text/html");
// Send message
Transport.send(message, message.getAllRecipients());
System.out.println("Sent message successfully....");
}
catch(Exception mex)
{
mex.printStackTrace();
}
}
public static void main(String[] args)
{
String to = "[email protected]";
String from = "[email protected]";
String host = "correctHostForExch2010";
String user = "correctUser";
String password = "CorrectPassword";
String subject = "Test Email";
String body = "Hi there. This is a test email!";
MailSender.sendHTMLEmail(from, to, host, user, password, subject, body);
}
}
編集:私は、デバッグをオンにし、それはときに、セッション
MAIL FROM:<[email protected]> 530 5.7.1 Client was not authenticated
DEBUG SMTP: got response code 530, with response: 530 5.7.1 Client was not authenticated.
は、なぜそれが可能だろうと言います認証succeded?
正しいことを確認しますが、デバッグモードを有効にすることができあなたのアプリがSMPTサーバに何を伝えているかを見ることができるように、話の最後にエラーを示す何かが表示されるはずです。 – Alex
こんにちはアレックス、ありがとう!私はデバッグを有効にし、MAIL FROM:<[email protected]> 530 5.7.1クライアントが認証されていません DEBUG SMTP:応答コード530、応答:530 5.7.1クライアントが認証されていません。なぜセッション認証が成功したのでしょうか? – legendofawesomeness
私はちょうどExchangeのユーザーのいくつかのバージョンでは、その中に任意の助けができる場合は、次の形式の 'user @ domain'または' domain \\ user'のいずれかを持つべきであることを見ました。 – Alex