使用Java Mail发送邮件

Posted 睡猪遇上狼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Java Mail发送邮件相关的知识,希望对你有一定的参考价值。

本笔记参考自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17839983

 

  JavaMail是SUN提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP、POP3、IMAP,开发人员使用JavaMail编写邮件程序时,无需考虑底层的通信细节(Socket),JavaMail也提供了能够创建出各种复杂MIME格式的邮件内容的API。使用JavaMail,我们可以实现类似OutLook、FoxMail的软件。虽然JavaMail(仅支持JDK4及以上)也是Java的API之一,但是却没有直接加入到JDK中,所以我们需要另行下载。另外,JavaMail依赖JAF(JavaBeans Activation Framework),JAF在Java6之后已经合并到JDK中,而JDK5之前需要另外下载JAF的类库。

  JavaMail:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-eeplat-419426.html#javamail-1.4.5-oth-JPR

  JAF:http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-plat-419418.html#jaf-1.1.1-fcs-oth-JPR

 

本人测试代码

package org.sunny.shop.utils;

import java.util.Properties;

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

public class EmailUtil {

    // 主机地址
    private static String host = "smtp.163.com";
    // 发件人,填写你的邮箱账号
    private static String from = "[email protected]";
    // 发件人密码,填写你自己的邮箱密码
    private static String password = "****";
    /***发件正文***/
    private static String link = "http://192.168.0.119:8080/";

    private static String getContent(String link){
        String content = "<h3>这是一封转到Tomcat服务器主页的测试邮件,点击此链接进行测试!</h3>"
                + "<a href=‘"+ link +"‘>点此激活</a>";
        return content ;
    }
    
    public static void sendEmail(String to, String content) {

        /*** 1、创建Session ***/
        Properties props = new Properties();
        // 开启调试模式
        props.setProperty("mail.debug", "true");
        // 发送主机需要身份验证
        props.setProperty("mail.smtp.auth", "true");
        // 设置主机名称
        props.setProperty("mail.host", host);
        // 设置主机端口
        props.setProperty("mail.port", "25");
        // 发送协议名称
        props.setProperty("mail.transport.protocol", "smtp");
        Session session = Session.getInstance(props);
        /*** 2、创建邮件对象 ***/
        Message msg = new MimeMessage(session);
        try {
            // 设置发件人
            msg.setFrom(new InternetAddress(from));
            // 设置标题
            msg.setSubject("这是一封测试邮件");
            // 设置内容
            msg.setContent(content, "text/html;charset=UTF-8");
            /*** 3、发送邮件 ***/
            Transport transport = session.getTransport();
            transport.connect(from, password);
            transport.sendMessage(msg, new Address[] { new InternetAddress(to) });
            transport.close();
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        System.out.println("send mail success !!");
    }public static void main(String[] args) {
     sendEmail(
"收件人账号@qq.com", getContent(link + "index.action")); } }

 

以上是关于使用Java Mail发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

代码片段

javax.mail.SendFailedException 为啥当我尝试通过我的 java 代码发送电子邮件时收到上述异常?

Java实现发送邮件功能

JAVA使用javax.mail发送邮件

从Oracle存储过程Oracle 11g发送邮件

Java mail发送邮件附件出现.eml文件夹