MyCode:
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;
public class SendMailTLS {
public static void main(String[] args) {
final String username = "[email protected]";
final String password = "myemailpassword";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.Host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
Session session = Session.getInstance(props,
new javax.mail.Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("[email protected]"));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse("[email protected]"));
message.setSubject("Testing Subject");
message.setText("Dear Mail Crawler,"+
"\n\n No spam to my email,please!");
Transport.send(message);
System.out.println("Done");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
私のエラー:
スレッド「メイン」の例外Java.lang.RuntimeException:javax.mail.MessagingException:
不明なSMTPホスト:smtp.gmail.com;
ネストされた例外は次のとおりです。
Java.net.UnknownHostException:smtp.gmail.com
Mail.SendMailTLS.main(SendMailTLS.Java:56)
原因:javax.mail.MessagingException:不明なSMTPホスト:smtp.gmail.com;
ネストされた例外は次のとおりです。
Java.net.UnknownHostException:smtp.gmail.com
com.Sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.Java:1970)
com.Sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.Java:642)
javax.mail.Service.connect(Service.Java:317)
javax.mail.Service.connect(Service.Java:176)で
javax.mail.Service.connect(Service.Java:125)で
javax.mail.Transport.send0(Transport.Java:194)
javax.mail.Transport.send(Transport.Java:124)で
Mail.SendMailTLS.main(SendMailTLS.Java:51)
原因:Java.net.UnknownHostException:smtp.gmail.com
Java.net.PlainSocketImpl.connect(PlainSocketImpl.Java:177)
Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:366)
Java.net.Socket.connect(Socket.Java:525)で
Java.net.Socket.connect(Socket.Java:475)で
com.Sun.mail.util.SocketFetcher.createSocket(SocketFetcher.Java:319)
com.Sun.mail.util.SocketFetcher.getSocket(SocketFetcher.Java:233)
com.Sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.Java:1938)
...あと7つ
Javaの結果:1
ローカルプロキシは172.17.0.4:808ユーザー名は:ser1、パスワードは:ser2
ソリューションpls ??
プロキシの下にいる場合は、Javaメールを使用できないと思います。
差出人: Oracle.com
Q:プロキシサーバーを介して動作するようにJavaMailを構成するにはどうすればよいですか?
A:JavaMailは現在、Webプロキシサーバーを介したメールサーバーへのアクセスをサポートしていません。プロキシサーバーを使用する主な理由の1つは、企業ネットワーク内からのHTTP要求が企業ファイアウォールを通過できるようにすることです。ファイアウォールは通常、インターネットへのほとんどのアクセスをブロックしますが、プロキシサーバーからの要求は通過できます。さらに、企業ネットワーク内のメールサーバーは、電子メールに対して同様の機能を実行し、SMTP経由でメッセージを受け入れてインターネット上の最終的な宛先に転送し、受信メッセージを受け入れて適切な内部メールサーバーに送信します。
このサーバーを試してください:
smtp.googlemail.com
これはGmailのセキュリティが原因で発生します...アプリを介してGmailアカウントへのアクセスを許可するだけで、アカウントの下に移動します: https://www.google.com/settings/security/lesssecureapps これで機能します..smtp.gmail.comは正しいです。変更する必要はありません。
また、インターネット接続も確認することを忘れないでください。
smtp.gmail.comなしでprops.put("mail.smtp.Host", "gmail.com");
を試してみてください
開発目的のためだけに、プロキシ経由でsmtp.gmail.comへのトンネルを開こうとすることができます
proxytunnel -q -p proxy_Host:proxy_port -d smtp.gmail.com:465 -a local_port
コードで使用します
props.put("mail.smtp.Host", "localhost");
props.put("mail.smtp.port", "local_port");