java的邮件服务器james怎么配置,怎么发送含有附件的邮件?

BSO 2020-09-01 14:16:22 java常见问答 3172

学习是一个漫长而又复杂的过程,对待java的学习更是如此。学无止境,永远要汲取新的知识。今天主要为大家说明一下,java的邮件服务器james应该怎么配置,以及用实例为大家展示怎么样发送包含附件的邮件。

首先我们要配置james,过程还是比较简单的,主要包括以下几个步骤:

1.安装jdk和jre;

2. 安装james server并配置默认server名字等信息。安装james server比较简单,直接到官网下载整个的zip包到本地,然后解压就可以了。解压到本地之后,到本地目录的/james-2.3.2/apps/james/SAR-INF下面,打开config.xml文件。在这里配置邮箱的域名和服务器的名字。代码如下:

<config>
    <James>
        <postmaster>support@abc.com</postmaster>
        <servernames autodetect="true" autodetectIP="true">
            <servername>abc.com</servername>
        </servernames>
        <James>
            <config>

3.配置环境变量JAVA_HOME,将java安装环境的变量配置好,这个部分不同的系统和平台不一样,都可以参考网上的流程。

4.启动James server,在linux环境下启动james server的时候需要注意,因为考虑到发送邮件访问的权限。这里需要切换到具有管理员权限的帐号下然后再启动它们。

启动的命令如下:

. / bin / run.sh

启动后的界面如下图:

邮件服务器james的配置

下面通过一个实际的代码为大家展示如何发送含有附件的邮件:

package cn.wz.util;
import java.io.FileOutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
/**
 * @Description: 发送包含附件的邮件
 */
public class SendEmail_attachments
{
    private static String mailFrom = null; // 指明邮件的发件人
    private static String password_mailFrom = null; // 指明邮件的发件人登陆密码
    private static String mailTo = null; // 指明邮件的收件人
    private static String mailTittle = null; // 邮件的标题
    private static String mailText = null; // 邮件的文本内容
    private static String mail_host = null; // 邮件的服务器域名
    private static String photoSrc = null; // 发送图片的路径
    public static void main(String[] args) throws Exception
    {
        mailFrom = "test1@wz.com";
        password_mailFrom = "test";
        mailTo = "test2@wz.com";
        mailTittle = "JavaMail邮件发送测试";
        mailText = "使用JavaMail创建的带附件的邮件";
        mail_host = "wz.com";
        photoSrc = "resource\\images\\5.jpg";
        Properties prop = new Properties();
        prop.setProperty("mail.host", mail_host); // 需要修改
        prop.setProperty("mail.transport.protocol", "smtp");
        prop.setProperty("mail.smtp.auth", "true");
        // 使用JavaMail发送邮件的5个步骤
        // 1、创建session
        Session session = Session.getInstance(prop);
        // 开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
        session.setDebug(true);
        // 2、通过session得到transport对象
        Transport ts = session.getTransport();
        // 3、连上邮件服务器,需要发件人提供邮箱的用户名和密码进行验证
        ts.connect(mail_host, mailFrom, password_mailFrom); // 需要修改
        // 4、创建邮件
        Message message = createAttachMail(session);
        // 5、发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        ts.close();
    }
    /**
     * @Method: createAttachMail
     * @Description: 创建一封带附件的邮件
     */
    public static MimeMessage createAttachMail(Session session) throws Exception
    {
        MimeMessage message = new MimeMessage(session);
        // 设置邮件的基本信息
        message.setFrom(new InternetAddress(mailFrom)); // 发件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo)); // 收件人
        // 邮件标题
        message.setSubject(mailTittle);
        // 创建邮件正文,为了避免邮件正文中文乱码问题,需要使用charset=UTF-8指明字符编码
        MimeBodyPart text = new MimeBodyPart();
        text.setContent(mailText, "text/html;charset=UTF-8");
        // 创建邮件附件
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler dh = new DataHandler(new FileDataSource(photoSrc)); // 需要修改
        attach.setDataHandler(dh);
        attach.setFileName(dh.getName());
        // 创建容器描述数据关系
        MimeMultipart mp = new MimeMultipart();
        mp.addBodyPart(text);
        mp.addBodyPart(attach);
        mp.setSubType("mixed");
        message.setContent(mp);
        message.saveChanges();
        // 将创建的Email写入到F盘存储
        message.writeTo(new FileOutputStream("F:/Program Files/TestMail/ImageMail.eml")); // 需要修改
        // 返回生成的邮件
        return message;
    }
}

以上就是关于java的邮件服务器james的配置过程。以及发送含有附件邮件的相关内容。想要了解更多java经典例子,敬请关注奇Q工具网。

推荐阅读:

在java中邮件协议对接端口有哪些, 如何接收html格式的邮件?

在java中发送邮件有哪些注意事项?四个类的实例展示

java用163邮箱发邮件的方式,步骤有哪些?