java实现邮件发送

一、java开发邮件发送文本内容

开发所需jar包:

<dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.5</version>
</dependency>

发送邮件java代码:

import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailUtils {
    private static String from = "[email protected]";// 用于给用户发送邮件的邮箱
    private static String password = "*******"; // 邮箱的密码
    private static String host = "smtp.163.com";// 发送邮件的服务器地址
    public static void sendMail(String to, String title, String content) {
        try {
            Properties prop = new Properties();
            prop.setProperty("mail.host", host);
            prop.setProperty("mail.transport.protocol", "smtp");
            prop.setProperty("mail.smtp.auth", "true");
            Session session = Session.getInstance(prop);
            session.setDebug(true);
            Transport ts = session.getTransport();
            ts.connect(host, from, password);
            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(from));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(
                    to));
            message.setSubject(title);
            message.setContent(content, "text/html;charset=UTF-8");
            message.saveChanges();
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        // 参数为接收邮件的邮箱地址和邮件主题和内容
        String nowDate = new Date().toString();
        sendMail("[email protected]", "java实现邮件开发", "利用改方法可以实现邮件发送!!" + nowDate);
    }
}

发送结果如下:
这里写图片描述
二、java开发带有附件的邮件发送
所需jar文件:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-email</artifactId>
    <version>1.4</version>
</dependency>

Java代码:

public class MailUtils {
    private static String from = "[email protected]";// 用于给用户发送邮件的邮箱
    private static String password = "*******"; // 邮箱的密码
    private static String host = "smtp.163.com";// 发送邮件的服务器地址
    private static int port = 25;
    public static void sendAttachmentMail(String to, String title, String content, String path) throws Exception {
        try {
            MultiPartEmail mail = new MultiPartEmail();
            // 设置端口
            mail.setSmtpPort(port);
            // 设置邮件服务器地址
            mail.setHostName(host);
            // 设置密码验证
            mail.setAuthentication(from, password);
            // 邮件发送者
            mail.setFrom(from);
            // 邮件接收者
            mail.addTo(to);
            // 邮件编码
            mail.setCharset("UTF-8");
            // 邮件主题
            mail.setSubject(title);
            //邮件内容
            mail.setMsg(content);
            // 创建附件
            EmailAttachment attachment = new EmailAttachment();
            attachment.setPath(path);
            attachment.setDisposition(EmailAttachment.ATTACHMENT);
            mail.attach(attachment);
            // 设置邮件发送时间
            mail.setSentDate(new Date());
            // 发送邮件
            mail.send();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) throws Exception {
        sendAttachmentMail("[email protected]", "带有附件的邮件", "这是一封带有附件的邮件!!","test.jpg");
    }
}

发送结果如下:
这里写图片描述
关键配置如下:
使用java实现邮件发送必须进行如下设置:
1、必须网页登录邮箱打开pop3和smtp服务
这里写图片描述
2、邮箱的登录密码为设置的第三方登录的授权码,而不是在网页登录邮箱时的密码(其他邮箱设置类似)
这里写图片描述

各邮箱服务器地址:(没有的可自行百度)

163免费邮箱的邮件服务器地址
接收邮件服务器:       pop.163.com。
发送邮件服务器(SMTP): smtp.163.com

126免费邮箱的邮件服务器地址
接收邮件服务器:  pop.126.com  
发送邮件服务器(SMTP): smtp.126.com

sina免费邮箱的邮件服务器地址为:
接收邮件服务器:pop.sina.com.cn 或:pop3.sina.com.cn
发送邮件服务器(SMTP):smtp.sina.com.cn

sohu闪电邮邮件服务器地址
接收邮件服务器:pop3.sohu.com
发送邮件服务器(SMTP):smtp.sohu.com

QQ邮箱
接收邮件服务器:pop.qq.com     
发送邮件服务器(SMTP):smtp.qq.com  

139邮箱客户端接收与发送服务器地
接收邮件服务器:     pop.139.com
发送邮件服务器(SMTP):smtp.139.com

注:经测试发现,在测试时,尽量保证每次发送邮件的内容不要相同,否则会出现发送失败情况,个人见解如此,当然也有可能是别的原因。若有别的见解,欢迎沟通。
此处设置为加上发送邮件的时间。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_26709459/article/details/77809112