メールの送信中にこのエラーが発生します
Java.lang.RuntimeException:javax.mail.SendFailedException:送信に失敗しました。ネストされた例外:クラスjavax.mail.MessagingException:SMTPホストに接続できませんでした:smtp.gmail.com、ポート:465、応答:-1
私のコードは:
Properties props = new Properties();
props.put("mail.smtp.Host", "smtp.gmail.com");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.socketFactory.port", "465");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
Session session = Session.getDefaultInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("email","password");
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("email"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(this.to));
message.setSubject("Testing");
message.setText("Hey, this is the testing email.");
Transport.send(message);
任意の助けをいただければ幸いです。
前もって感謝します。
SSLを使用していることを伝える必要があります。
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
あなたが何かを見逃した場合のために、ここに作業コードがあります:
String d_email = "[email protected]",
d_uname = "Name",
d_password = "urpassword",
d_Host = "smtp.gmail.com",
d_port = "465",
m_to = "[email protected]",
m_subject = "Indoors Readable File: " + params[0].getName(),
m_text = "This message is from Indoor Positioning App. Required file(s) are attached.";
Properties props = new Properties();
props.put("mail.smtp.user", d_email);
props.put("mail.smtp.Host", d_Host);
props.put("mail.smtp.port", d_port);
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.port", d_port);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
SMTPAuthenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(true);
MimeMessage msg = new MimeMessage(session);
try {
msg.setSubject(m_subject);
msg.setFrom(new InternetAddress(d_email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
Transport transport = session.getTransport("smtps");
transport.connect(d_Host, Integer.valueOf(d_port), d_uname, d_password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (AddressException e) {
e.printStackTrace();
return false;
} catch (MessagingException e) {
e.printStackTrace();
return false;
}
NetBeansを使用してデバッグするときに、実際のjarファイルを実行するときにも、この問題が発生しています。アンチウイルスは電子メールの送信をブロックします。デバッグ中はウイルス対策を一時的に無効にするか、NetBeansと実際のjarファイルをスキャン対象から除外する必要があります。私の場合、アバストを使用しています。
除外する方法については、このリンクを参照してください。 ファイル/ウェブサイトの例外をavast!Antivirus 2014に追加する方法
わたしにはできる。
私がやったことはコメントアウトした
props.put("mail.smtp.starttls.enable","true");
どうやらGメールの場合は必要なかったからです。次に、まだこれを行っていない場合は、プログラムのGメールでアプリパスワードを作成する必要があります。私はそれをしました、そしてそれは完全に働きました。このリンクは、次の方法を示しています。 https://support.google.com/accounts/answer/1858 。
私の場合、接続を妨げるアバストアンチウイルスでした。この機能を無効にするアクション:アバスト->設定->コンポーネント->メールシールド(カスタマイズ)-> SSLスキャン->「SSL接続のスキャン」のチェックを外します。
ポート465は「smtp over SSL」用です。
http://javamail.kenai.com/nonav/javadocs/com/Sun/mail/smtp/package-summary.html
[...] For example, use
props.put("mail.smtp.port", "888");
to set the mail.smtp.port property, which is of type int.
Note that if you're using the "smtps" protocol to access SMTP over SSL,
all the properties would be named "mail.smtps.*"