このトピックでは、Java に適用可能な SMTP 呼び出しの例を紹介します。
Alibaba Mail の構成
SMTP サーバーアドレス: smtp.sg.aliyun.com
ポート: 暗号化なしは 25、SSL 暗号化は 465
//pom.xml javax.mail への参照を追加するか、プロジェクトに javax.mail の jar パッケージを導入します。
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.security.Security;
import java.util.Date;
import java.util.Properties;
public class QiyeMailSend {
public static void main(String[] args) {
try{
// SSL 接続とメール環境を設定します。
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Properties props = System.getProperties();
// プロトコル。
//props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.sg.aliyun.com");// SMTP サーバー。
// props.setProperty("mail.smtp.port", "25");// 暗号化されていないポート。
// SSL 暗号化方式を以下のように構成します。
props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.smtp.socketFactory.fallback", "false");
props.setProperty("mail.smtp.socketFactory.port", "465");
props.setProperty("mail.smtp.auth", "true");// SMTP がメールを送信し、認証が必要であることを示します。
props.setProperty("mail.smtp.from", "送信元アドレス");// mailfrom パラメーター。
props.setProperty("mail.user","送信元アドレス");// 送信者のアカウント。
props.setProperty("mail.password","送信者のパスワード");// 送信者アカウントのパスワード。サードパーティクライアントのセキュリティパスワードが有効になっている場合は、新しいパスワードを使用します。
// メールセッションを確立します。
Session session = Session.getDefaultInstance(props, new Authenticator() {
// ID 認証
protected PasswordAuthentication getPasswordAuthentication() {
// 送信者のアカウントとパスワード。
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
});
// メールオブジェクトを作成します。
MimeMessage message = new MimeMessage(session);
// メールの送信者を指定します。
InternetAddress from=new InternetAddress("sender address","送信者名"); //from パラメーター。代理送信を実現できます。注: 代理送信は、受信者によって拒否されたり、ゴミ箱に入ったりしやすいです。
message.setFrom(from);
// メールの受信者を設定します。
String[] to = {"受信者アドレス 1","受信者アドレス 2","受信者アドレス 3"};// 受信者リスト。
InternetAddress[] sendTo = new InternetAddress[to.length];
for (int i=0;i<to.length;i++){
// System.out.println("送信先:" + to[i]);
sendTo[i] = new InternetAddress(to[i]);
}
// 受信者を指定します。
message.setRecipients(Message.RecipientType.TO,sendTo);
// メールの件名を設定します。
message.setSubject("メールの件名");
// メールの本文を設定します。
String content="本文";
message.setContent(content,"text/html;charset=UTF-8");
// 時間を指定します。
message.setSentDate(new Date());
message.saveChanges();
// メールを送信します。
Transport.send(message);
System.out.println("送信に成功しました! ");
}catch(Exception e){
System.out.println("例外:"+ e.toString());
}
}
}