すべてのプロダクト
Search
ドキュメントセンター

Alibaba Mail:Java の SMTP 呼び出し例

最終更新日:Jan 19, 2025

このトピックでは、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());
        }
    }
}