首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Apache James 郵件服務器搭建與 Spring Mail 整合完整指南

     編輯:Java 綜合教學

Apache James 郵件服務器搭建與 Spring Mail 整合完整指南

Apache James 是純 Java 實現的企業級郵件服務器,支援 SMTP/POP3/IMAP。本文覆蓋下載安裝、域名配置、賬號創建、JavaMail 代碼發信、Spring 整合發送純文本/HTML/附件/內嵌圖片郵件。

1. James 服務器安裝啟動

  1. 官網 下載 apache-james-2.3.2.zip,解壓。
  2. 確保 JAVA_HOME 配置正確,端口 25(SMTP)/110(POP3)/119(NNTP) 未被佔用(關閉系統自帶 SMTP 服務)。
  3. bin/run.bat 啟動,控制台輸出服務啟動信息即成功。

2. 域名與賬號配置

  1. 啟動一次後生成 apps/james/SAR-INF/config.xml。
  2. 修改 <postmaster>、<servernames autodetect="false"><servername>yourdomain.com</servername></servernames>。
  3. Telnet 連接管理端口(默認 4555):telnet localhost 4555,登錄 root/root。
  4. 創建賬號:adduser username password,其他命令見 help。

3. JavaMail 原生發信

Properties prop = System.getProperties();
prop.put("mail.smtp.host", "smtp.163.com");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.port", "25");
Session session = Session.getInstance(prop, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("user@163.com", "pass");
    }
});
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("user@163.com"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress("to@126.com"));
msg.setSubject("測試");
msg.setContent("內容", "text/html;charset=gbk");
Transport.send(msg);

4. Spring Mail 整合

applicationContext.xml

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="192.168.15.22"/>
    <property name="port" value="25"/>
    <property name="username" value="dzw@mail.com"/>
    <property name="password" value="dzw"/>
    <property name="protocol" value="smtp"/>
    <property name="defaultEncoding" value="utf-8"/>
    <property name="javaMailProperties">
        <props><prop key="mail.smtp.auth">true</prop></props>
    </property>
</bean>

簡單文本郵件

public class Mail {
    private MailSender mailSender;
    public void send() {
        SimpleMailMessage msg = new SimpleMailMessage();
        msg.setFrom("dzw@mail.com"); msg.setTo("tom");
        msg.setSubject("問好"); msg.setText("好久不見");
        mailSender.send(msg);
    }
}

HTML 郵件 + 內嵌圖片

public class MailWithHTML {
    private JavaMailSender mailSender;
    public void send() throws MessagingException, IOException {
        MimeMessage mime = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mime, true, "UTF-8");
        helper.setFrom("dzw@mail.com"); helper.setTo("tom");
        helper.setSubject("歡迎");
        String html = "歡迎註冊
"; helper.setText(html, true); helper.addInline("photo", new ClassPathResource("/attachfiles/Quartz.png")); mailSender.send(mime); } }

帶附件郵件(中文文件名編碼)

helper.addAttachment(MimeUtility.encodeWord(file.getFilename()), file);

關鍵點提醒

  • James 僅作為本地/測試服務器,生產環境建議使用企業郵箱(騰訊/阿里/網易)或自建 Postfix/Exchange。
  • Spring JavaMailSender 線程安全,可作為單例 Bean 注入多處。
  • 大附件建議配置 spring.mail.max-attachment-size 並使用流式處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved