JavaMail smtp.mail.yahoo.co.jp
お世話になります。
JavaMail1.4を用いて、
自作プログラム内でメール送信を行おうとしているのですが、
エラーが返ってきてしまいます。
以下エラー内容です。
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.co.jp", port 25, isSSL false
javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.yahoo.co.jp, port: 25;
nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1227)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:322)
at javax.mail.Service.connect(Service.java:258)
at javax.mail.Service.connect(Service.java:137)
at javax.mail.Service.connect(Service.java:86)
at javax.mail.Transport.send0(Transport.java:150)
at javax.mail.Transport.send(Transport.java:80)
at partsPackage.MailTransfer.send(MailTransfer.java:135)
at partsPackage.Tester.main(Tester.java:14)
設定が悪いのか、
サーバーの指定等が悪いのか検討が付かない状況です。
ソースは
final String username = "○○○○";
final String password = "○○○○";
final String from_name = "○○○○";
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Session session = null;
MimeMessage mimeMessage = null;
String charset = "UTF8";
String sendTo = null;
String title = null;
String contents = null;
public MailTransfer(){}
public MailTransfer(String charset){this.charset=charset;}
boolean isConnected(){return session!=null;}
public boolean hasMessage(){return mimeMessage!=null;}
public boolean hasDestination(){return sendTo!=null;}
public boolean hasTitle(){return title!=null;}
public boolean hasText(){return contents!=null;}
void connect(){
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Properties props = System.getProperties();
props.setProperty("mail.smtp.host", "smtp.mail.yahoo.co.jp");
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.port", "25");
props.setProperty("mail.smtp.socketFactory.port", "25");
props.put("mail.smtp.auth", "true");
props.put("mail.debug", "true");
session = Session.getInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
}
public void create_mail(){
System.out.println("送信メール作成");
if(!isConnected())connect();
if(hasMessage())return;
mimeMessage=new MimeMessage(session);
try {
// 送信元メールアドレスと送信者名を指定
mimeMessage.setFrom(new InternetAddress(username+"@yahoo.co.jp",from_name,charset));
// メールの形式を指定
mimeMessage.setHeader("Content-Type","text/html");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("送信メール作成完了");
}
よろしくお願い致します。
補足
ご返事ありがとうございます、 以下は実際のソースです。 setFrom()メソッドが無いことが原因なのでしょうか? 開発環境ではつけなくても動いたので、あえてつけませんでした。 //SMTPサーバのプロパティをセット Properties prop = new Properties(); //SMTPサーバを指定 prop.put("mail.smtp.host",this.getSmtphost()); //サーバとのセッションを作成 Session session = Session.getDefaultInstance(prop,null); //送信用のMessageオブジェクトを作成 MimeMessage message = new MimeMessage(session); //宛先をセット InternetAddress[] iaddr = InternetAddress.parse(this.getMailaddress(),false); message.setRecipients(Message.RecipientType.TO,iaddr); //題名をセット message.setSubject(title,"iso-2022-jp"); //本文をiso-2022-jpでセット message.setText(body,"iso-2022-jp"); //X-Headerをセット message.setHeader("X-Mailer","JavaMail"); //送信時間をセット message.setSentDate(new Date()); //送信 Transport.send(message); ※以下は実装しておりません。 message.setFrom(new InternetAddress("", this.getDoctorname_sei()+" "+this.getDoctorname_mei(),"iso-2022-jp"));