源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

基于java使用JavaMail发送邮件

  • 时间:2021-11-21 19:56 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:基于java使用JavaMail发送邮件
[b]一、邮件的相关概念[/b] 邮件协议。主要包括: SMTP协议:Simple Mail Transfer Protocol,即简单邮件传输协议,用于发送电子邮件 POP3协议:Post Office Protocol 3,即邮局协议的第三个版本,用于接收邮件 IMAP协议:Internet Message Access Protocol,即互联网消息访问协议,是POP3的替代协议 -------------------------------------------------------------------------------- [b] 二、搭建James邮件服务器[/b]  James是Apache的一个开源项目,纯Java实现  搭建James服务器  ① 下载apache-james-2.3.2.zip解压  ② 运行bin目录下的run.bat即可启动服务器[Telnet  localhost 4555]  ③ 通过appsjamesSAR-INFconfig.xml配置服务器  注:先到bin下run一道。 放如非中文目录, 得再控制面板开启Telnet客户端 [b]--------------------------------------------------------------------------------[/b] [b] 三、安装OutLook[邮件客户端][/b] 产品秘钥:PQDV9-GPDV4-CRM4D-PHDTH-4M2MT 创建用户账号 一、使用telnet连接James的Remote Administration Tool 二、以管理员身份登录 三、使用adduser命令添加用户 -------------------------------------------------------------------------------- [b]四、配置outlook邮件客户端[/b] 为了方便查看,可以配置Microsoft Outlook邮件客户端,保证James邮件服务器是启动状态,启动Microsoft Outlook. 选择“工具”->“选项”,打开“选项”面板。选择“邮件设置”并点击“电子邮件账户”,打开“账号设置”面板。在“电子邮件”选项卡下新建邮件账户 -------------------------------------------------------------------------------- 五、案例[搭建James邮件服务器] 需求说明: 在本机搭建James邮件服务器,自定义服务器的名称。 创建两个测试用户。 在Microsoft Outlook中配置其中一个测试用户为Outlook邮件账户 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100150_0_37154.png[/img] -------------------------------------------------------------------------------- [b] 六、使用JavaMail发送电子邮件(案例)[/b]  需求: 使用JavaMail技术,实现从A账户给B账户发送一封电子邮件,标题为“会议通知”,邮件内容为“XX你好!请于明天下午16:00 准时到B01会议室召开技术讨论会。”通过Outlook 客户端查看邮件程序发送的邮件是否发送成功 关键代码: 创建一个类EmailAuthenticator并继承自Authenticator,并植入用户名和密码 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100150_1_81999.png[/img]  创建Mail类设置邮件信息:
public class Mail {

 private String mailServer,from,to,mailSubject,mailContent;

 private String username,password;

 public Mail(){

   //设置邮件信息

   //进行认证登录的用户名

   username="hq@mail.com";

   //认证密码

   password="hq";

   //认证的邮箱对应的邮件服务器

   mailServer="192.168.17.176";

   //发件人信息

   from="wj";

   //收件人信息

   to="wj@mail.com";

   //邮件标题

   mailSubject="我们都是好孩子333";

   //邮件内容

   mailContent="这是一封测试邮件!如有雷同,纯属不可能";

 }

 //设置邮件服务器

 @SuppressWarnings("static-access")

public void send(){

   Properties prop=System.getProperties();

   //指定邮件server

   prop.put("mail.smtp.host", mailServer);

    

   //是否开启认证

   prop.put("mail.smtp.auth", "true");

    

   //smtp协议的

   prop.put("mail.smtp.port", "25");

   //产生Session服务

   EmailAuthenticator mailauth=new EmailAuthenticator(username, password);

   Session mailSession=Session.getInstance(prop,(Authenticator)mailauth);

    try {

      //封装Message对象

      Message message=new MimeMessage(mailSession);

      

      message.setFrom(new InternetAddress(from)); //发件人

      message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人

      message.setSubject(mailSubject);

      //设置内容(设置字符集处理乱码问题)

      message.setContent(mailContent,"text/html;charset=gbk");

      message.setSentDate(new Date());

      //创建Transport实例,发送邮件

      Transport tran=mailSession.getTransport("smtp");

      tran.send(message,message.getAllRecipients());

      tran.close();

      

    } catch (Exception e) {

      e.printStackTrace();

    }

 } 
测试类:  
public class MyTest {

  public static void main(String[] args) {

    Mail mail=new Mail();

    mail.send();

    System.out.println("success!");

  }
} 
[img]http://img.1sucai.cn/uploads/article/2018010710/20180107100151_2_37359.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100151_3_61156.png[/img] -------------------------------------------------------------------------------- [b]七、发送带附件的Mail[/b]
public class MailWithAttachment {

  private JavaMailSender mailSender; //必须使用 JavaMailSender

  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("hq@mail.com");

    helper.setTo("wj@mail.com");

     

    helper.setSubject("哈哈哈");

    helper.setText("每日一笑,开开心心!!!");

    //添加附件1

    ClassPathResource file1 = new ClassPathResource(

                    "/cn/bdqn/attachfiles/test.doc");

    helper.addAttachment(file1.getFilename(), file1.getFile());

    //添加附件2:附件的文件名为中文时,需要对文件名进行编码转换,解决乱码问题

    ClassPathResource file2 = new ClassPathResource(

                    "/cn/bdqn/attachfiles/附件测试文件.doc");

    helper.addAttachment(MimeUtility.encodeWord(file2.getFilename()),file2.getFile());

    mailSender.send(mimeMessage);

  }

} 

测试类:  
public class MailTest {

  public static void main(String[] args){

    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

     

    /*测试带附件的邮件*/

    try{

      MailWithAttachment mailWithAttach = (MailWithAttachment)context.getBean("mailWithAttachment");

      mailWithAttach.send();

    }catch(Exception e){

      System.out.print(e.toString());

    }

  }

}  
applicationContext.xml:大配置    [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100152_4_24030.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100152_5_42679.png[/img] [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100153_6_54103.png[/img]  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程素材网。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部