• 用JavaMail写发送邮件程序


    参加开发过各种各样的Web应用,经常会遇到Web应用需要嵌入邮件功能。例如,如果是EC应用的话,顾客下单后会收到下单确认邮件,而商品提供者会收到有新订单需要处理的邮件,这样商品提供者就不必定期的访问自己的网站或数据库也能够处理订单,而顾客也不必记下下单时填写的内容。或者还有,有新品上市时,通过邮件给希望收到最新信息的老顾客发送商品介绍和各种促销活动等。

    一般来说,通过Pull型浏览器(能自动收集信息)和Push型邮件系统(信息提供者积极提供信息)的协同,可以给用户带来更好的用户体验,对网站经营者也可以提供非常有利的解决方案。

    在本文中,就是要介绍能够简单实现这种邮件系统的Java类库--JavaMail。利用JavaMail,不用考虑SMTP这种底层的通信实现,只要设定相关参数就可实现发送邮件。

    在这里,只是先用固定文本信息来尝试,当然你可以编辑必要的参数,从数据库获取数据等,来实现动态的发送邮件功能。

    下面通过具体代码来了解。

    1. 安装JavaMail类库

    要利用JavaMail类库,除了JavaMail自身,还需要JAF(Java Activation Framework),Java6以后的版本不需要JAF。可以从下面的地址获取这些。

    http://www.oracle.com/technetwork/java/javamail/index-138643.html

    下载后解压,将lib下的类库添加到你的Classpath。

    2. Java程序

    MailTransfer.java

     1 import java.io.UnsupportedEncodingException;
     2 import java.util.Properties;
     3 
     4 import javax.mail.Message;
     5 import javax.mail.MessagingException;
     6 import javax.mail.Session;
     7 import javax.mail.Transport;
     8 import javax.mail.internet.InternetAddress;
     9 import javax.mail.internet.MimeMessage;
    10  
    11 
    12 public class MailTransfer {
    13   public static void main(String[] args) {
    14     Properties objPrp=new Properties();
    15     objPrp.put("mail.smtp.host","smtp.xxxxx.ne.jp"); // SMTP Server
    16     objPrp.put("mail.host","smtp.xxxxx.ne.jp"); // Host
    17     // Mail Session
    18     Session session=Session.getDefaultInstance(objPrp,null);
    19     // Sending Message
    20     MimeMessage objMsg=new MimeMessage(session);
    21     try {
    22       // To (还可以设定其他CC或BCC)
    23       objMsg.setRecipients(Message.RecipientType.TO,"xxxxxx@hotmail.com");
    24       // From
    25       InternetAddress objFrm=new InternetAddress("xxxxxx@gmail.com","E.Kou");
    26 
    27       objMsg.setFrom(objFrm);
    28       // 标题
    29       objMsg.setSubject("Mail Test","utf-8");
    30        
    31       // 邮件内容
    32       objMsg.setText("Hello","utf-8");
    33       
    34       // 发送邮件
    35       Transport.send(objMsg); 
    36     } catch (UnsupportedEncodingException e) {
    37       e.printStackTrace();
    38     } catch (MessagingException e) {
    39       e.printStackTrace();
    40     } 
    41   }
    42 }

    这个例子是从gmail向hotmail发送一封名为Mail Test的邮件。

    3. 需要注意的地方

    ①发送中文邮件时要注意编码

    这里用的是utf-8

    ②mail.host和mail.smtp.host都要指定

    因为Java会先识别mail.smtp.host,所以只指定mail.smtp.host也可以。但是Message-ID是利用mail.host生成的,所以如果不指定mail.host,可能会影响Message-ID的生成。

  • 相关阅读:
    关于学习c++服务端的进度,一边更新,一边学习
    Ubuntu20.04 用git上传GitHub文件
    省赛菜鸡打铜记
    Filename too long unable to checkout working tree warning: Clone succeeded, but checkout failed.
    java 对象转Json字符串 --- 报declares multiple JSON fields named XXX 解决方法
    配置win10电脑右下角任务栏时间显示时分秒
    HTTP与HTTPS
    为人三会 口才三绝 修心三不
    1093
    java项目clone后不显示maven
  • 原文地址:https://www.cnblogs.com/kouen/p/3110035.html
Copyright © 2020-2023  润新知