全部產品
Search
文件中心

:SMTP郵件投遞代碼之Java調用樣本

更新時間:Jul 13, 2024

本文為SMTP郵件投遞代碼Java調用樣本。

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() {
                //身份認證
                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("寄件者地址","寄件者名稱"); //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());
        }
    }
}