可以用代码发邮件了哦

发送邮件包含的内容有:

  1. from字段   --用于指明发件人
  2. to字段       --用于指明收件人
  3. subject字段  --用于说明邮件主题
  4. cc字段      -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件抄送给了谁
  5. bcc字段    -- 密送,将邮件发送给收件人的同时将邮件秘密发送给另一个收件人,收件人无法看到邮件密送给了谁

  邮件体指的就是邮件的具体内容。

使用JavaMail创建邮件和发送邮件

JavaMail创建的邮件是基于MIME协议的。因此可以使用JavaMail创建出包含图片,包含附件的复杂邮件。

MIME协议简单介绍

在我们的实际开发当中,一封邮件既可能包含图片,又可能包含有附件,在这样的情况下,RFC882文档规定的邮件格式就无法满足要求了。

  MIME协议是对RFC822文档的升级和补充,它描述了如何生产一封复杂的邮件。通常我们把MIME协议描述的邮件称之为MIME邮件MIME协议描述的数据称之为MIME消息。
  对于一封复杂邮件,如果包含了多个不同的数据,MIME协议规定了要使用分隔线对多段数据进行分隔,并使用Content-Type头字段对数据的类型、以及多个数据之间的关系进行描述。

JavaMail API的简单介绍

  

发送一封只包含文本的简单邮件

  package me.gacl.main;

  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 Sendmail {

     /**
      * @param args
      * @throws Exception
      */
     public static void main(String[] args) throws Exception {

         Properties prop = new Properties();
         prop.setProperty("mail.host", "smtp.sohu.com");
         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、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
         ts.connect("smtp.sohu.com", "gacl", "邮箱密码");
         //4、创建邮件
         Message message = createSimpleMail(session);
         //5、发送邮件
         ts.sendMessage(message, message.getAllRecipients());
         ts.close();
     }

     public static MimeMessage createSimpleMail(Session session)
             throws Exception {
         //创建邮件对象
         MimeMessage message = new MimeMessage(session);
         //指明邮件的发件人
         message.setFrom(new InternetAddress("[email protected]"));
         //指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
         message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
         //邮件的标题
         message.setSubject("只包含文本的简单邮件");
         //邮件的文本内容
         message.setContent("你好啊!", "text/html;charset=UTF-");
        //返回创建好的邮件对象
         return message;
     }
}

发送带图片的邮件

 package me.gacl.main;

  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;

 public class Sendmail {

     public static void main(String[] args) throws Exception {
                 Properties prop = new Properties();
         prop.setProperty("mail.host", "smtp.sohu.com");
         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("smtp.sohu.com", "gacl", "邮箱密码");
         //4、创建邮件
         Message message = createImageMail(session);
         //5、发送邮件
         ts.sendMessage(message, message.getAllRecipients());
         ts.close();
     }

     public static MimeMessage createImageMail(Session session) throws Exception {
         //创建邮件
         MimeMessage message = new MimeMessage(session);
         // 设置邮件的基本信息
         //发件人
         message.setFrom(new InternetAddress("[email protected]"));
         //收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
         //邮件标题
         message.setSubject("带图片的邮件");

         // 准备邮件数据
         // 准备邮件正文数据
         MimeBodyPart text = new MimeBodyPart();
         text.setContent("这是一封邮件正文带图片<img src=‘cid:xxx.jpg‘>的邮件", "text/html;charset=UTF-8");
         // 准备图片数据
         MimeBodyPart image = new MimeBodyPart();
         DataHandler dh = new DataHandler(new FileDataSource("src\\1.jpg"));
         image.setDataHandler(dh);
         image.setContentID("xxx.jpg");
         // 描述数据关系
         MimeMultipart mm = new MimeMultipart();
         mm.addBodyPart(text);
        mm.addBodyPart(image);
         mm.setSubType("related");

         message.setContent(mm);
         message.saveChanges();
         //将创建好的邮件写入到E盘以文件的形式进行保存
         message.writeTo(new FileOutputStream("E:\\ImageMail.eml"));
         //返回创建好的邮件
       return message;
     }
 }

发送带附件的邮件

package cn.bdqn;

import java.io.IOException;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;

import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

public class MailWithAttachment {
    private JavaMailSender mailSender;
    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void send() throws MessagingException,IOException{
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
        helper.setFrom("[email protected]");
        helper.setTo("[email protected]");

        helper.setSubject("haha");
        helper.setText("嘿嘿");

        ClassPathResource file1 = new ClassPathResource(
                                        "/cn/bdqn/attachfiles/test.doc");
        helper.addAttachment(file1.getFilename(), file1.getFile());

        ClassPathResource file2 = new ClassPathResource(
                                        "/cn/bdqn/attachfiles/test.doc");
        helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());
        mailSender.send(mimeMessage);
    }
}

大配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="192.168.8.71"></property><!-- 服务器 -->
        <property name="port" value="25"></property><!-- 端口 -->
        <property name="username" value="[email protected]"></property><!-- 用户名 -->
        <property name="password" value="fsb"></property><!-- 密码 -->
        <property name="protocol" value="smtp" ></property><!-- 协议 -->
        <property name="defaultEncoding" value="utf-8"></property><!-- 默认编码 -->
        <property name="javaMailProperties">
            <props>
                <!-- 设置SMTP服务器需要用户验证  -->
                <prop key="mail.smtp.auth">true</prop>
            </props>
        </property>
    </bean>

    <bean id="mailWithAttachment" class="cn.bdqn.MailWithAttachment">
        <property name="mailSender" ref="mailSender"></property>
    </bean>

</beans>

测试:

package cn.bdqn;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MailTest {
    public static void main(String[] args){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

        try{
            MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");
            mailWithAttach.send();
            System.out.println(0);
        }catch(Exception e){
            System.out.print(e.toString());
        }
    }
时间: 2024-08-07 04:31:01

可以用代码发邮件了哦的相关文章

通过java代码发邮件

用java发邮件,必须要导入新的包 mail.jar – 发邮件的核心包 activation.jar – 对用户和密码加密. 在mail.jar中有三个核心类: Javax.mail.Session – 是指与邮件服务器会话.整个项目中只要一个就可以了. Javax.mail.Message(接口)  - 准备发送数据信息. MimeMessage - 可以设置类型的数据信息. Transport – 它拥有一个方法可以发送Message. 第一步:导入两个jar包 第二步:发简单的邮件 @T

java windows自动化-mail自动发邮件

本文旨在让测试人员了解如何发邮件 发邮件的话,最简单的事是直接手动发邮件,但是在自动化测试中,应做到让机器或者代码来自动发送邮件,笔者大概了解以下几种方法,总有一款口味适合你:1java代码来做下面即为我的java代码package util;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.*;import javax.mail.internet.*;impo

java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码

代码下载地址:http://www.zuidaima.com/share/1838230785625088.htm 原文:java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码 最近由于zuidaima.com注册用户的增多,qq企业邮箱发送邮件会被封禁账号导致注册后面的用户收不到周总结,所以紧急开发了一套多账号,多服务器发送邮件的程序. 大概的设计思路如下: 1.服务器可以无限扩展,但由于qq企业邮箱是限定域名,所以要想多服务器还得有多域名,多账号也不行. 2.最

通过Sharepoint 发邮件代码

大家都知道在.net 中实现邮件的发送已经不是什么难事,但是需要配置smtp服务器.在Sharepoint这个就没有必要了,只要sharepoint配置了 Smtp,我们就可以通过以下简单的代码就能发邮件了 using Microsoft.SharePoint.Utilities; SPUtility.SendEmail(SPContext.Current.Web, false, false, "[email protected]", "E-mail title",

域模式下的ASP.NET 发邮件代码

ASP.NET 下发邮件是个很把普通的功能,可是,在登陆域模式,在域组织的局域网中,有不同的写法.以前用163的邮箱发邮件,是在工作组模式下的.两种代码大致相同,但是域模式有 不同的地方 domain.com 是域,  [email protected] 是邮箱帐户 MailMessage m = new MailMessage();                 m.Subject = "邮件主题;                 m.SubjectEncoding = Encoding.U

【Python系列】Python自动发邮件脚本

缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月,看看效果再拓展吧. 脚本主要是通过Python写的,调的smtplib库,这些是基础,大家在网上一搜一大堆,今天主要给大家讲解下如何避免进入垃圾邮件系统,以及整个系统搭建时的一些思想.可能刚搞Python不久,有很多可能是错误的写法望大家提出来哈~ 配置 CentOS7.0系统 Python 3.4

python编码发邮件

下面为使用python编写的发邮件的代码,注意,代码中的password不是邮箱的密码,而是客户端授权代码.获取客户端授权代码,以163邮箱为例:设置-常规设置-客户端授权密码. from email.mime.text import MIMEText from email.header import Header  subject = 'python email test'   msg = MIMEText('数据库中有内容更新,请及时查看', 'plain', 'utf-8') msg['S

iOS中打电话、打开网址、发邮件、发短信等

常用小功能 小功能简介 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等 打电话-方法1 最简单最直接的方式:直接跳到拨号界面 NSURL *url = [NSURL URLWithString:@"tel://10010"]; [[UIApplication sharedApplication] openURL:url]; 缺点 电话打完后,不会自动回到原应用,直接停留在通话记录界面 打电话-方法2 拨号之前会弹框询问用户是否拨号,拨完后能

PHP通过mail()或Socket发邮件

PHP通过mail()或Socket发邮件 1.PHP中发送邮件的方法 PHP发送邮件是“非常的简单” 因为他提供了mail()函数直接发送,但这也继 register globals 成为了对初学者的第二大杀手. (1)通过mail()函数发送邮件 (2)通过socket通讯,使用SMTP传输 2.mail()函数的使用 mail() 函数允许您从脚本中直接发送电子邮件. 如果邮件的投递被成功地接收,则返回 true,否则返回 false. mail(to,subject,message,he