精华内容
下载资源
问答
  • 创建邮件列表

    2008-05-24 02:23:00
    google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java
    	
    
    
    
    <script type="text/javascript">
    
    google_ad_client = "pub-8800625213955058";
    
    /* 336x280, 创建于 07-11-21 */
    
    google_ad_slot = "0989131976";
    
    google_ad_width = 336;
    
    google_ad_height = 280;
    
    //
    
    </script>
    
    <script type="text/javascript"
    
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    
    </script>
    
    
    
    
    
    设置数据仓库
    
    
    
    
    
    

    邮件列表mailet需要一个数据仓库来保存订阅者列表。每个邮件列表都有一个单独的数据仓库,并且完全独立于James用来管理e-mail账号的用户数据仓库。这在config.xml文件中的<users-store>配置块中。

    下面说明用JDBC连接后台数据库作为数据仓库的ListUsersJdbcRepository类。注意:在别处定义的db://maildb资源中会创建一个单独的表 lists。目前这个表中有两列:列表名和订阅者列表。

    void.gifvoid.gifvoid.gif
    void.gif
      <repository name="list-name"
    
                     class="org.apache.james.userrepository.ListUsersJdbcRepository"
    
                     destinationURL="db://maildb/lists/list-name">
    
        <sqlFile>file://conf/sqlResources.xml</sqlFile>
    
      </repository>
    
    
    void.gif
    void.gifvoid.gifvoid.gif

    下面说明使用文件系统作为数据仓库的UsersFileRepository类。[注意:当配置文件系统数据仓库时,目标URL是一个子节点,而配置数据库数据仓库时是一个属性。 这中矛盾会在James将来的版本中去除。]

    void.gifvoid.gifvoid.gif
    void.gif
      <repository name="list-name"
    
                     class="org.apache.james.userrepository.UsersFileRepository">
    
        <destination URL="file://var/lists/list-name/" /> 
    
      </repository>
    
    
    void.gif
    void.gifvoid.gifvoid.gif
    展开全文
  • 邮件列表有时候称之为邮件组或者分发列表,允许多用户组地址被组合起来就好像他们共享一个公共邮箱。发送到列表的电子邮件的副本分发到列表里的每一个成员。列表可以包含本地和/或远程目的地址的成员,可以是公开的...

    列表最直观的作用就是用于快速简洁的进行邮件群发。

    邮件列表有时候称之为邮件组或者分发列表,允许多用户组地址被组合起来就好像他们共享一个公共邮箱。发送到列表的电子邮件的副本分发到列表里的每一个成员。列表可以包含本地和/或远程目的地址的成员,可以是公开的或是保密的,适中的或开放的,以摘要格式或是以常规格式发送等等。

    特别注意:

    1.列表名称不能和账户名称重名,列表不占用用户数,列表名称不能为中文。

    2.邮件列表一般不对外开放,最好只允许域内用户收发。

    3.邮件列表的权限设置相当的关键。(下文会有权限相关的说明)

    4.邮件列表的成员普通用户是无法知道的。

    5.管理员账户是不受收发权限限制的。

     

     

    如何手动创建邮件列表

    通过【设置->邮件列表管理器->新建列表】新建邮件列表

    设置->邮件列表管理器选项
    邮件列表的创建
     

    邮件列表创建好后,在\MDaemon\App目录下会生成一个同名的.grp文件。

    *.grp文件可以通过记事本打开,里面记录了邮件列表的相关配置和成员信息及类型。

     

     

    邮件列表成员添加

    现提供以下几种添加列表成员的方法:

    1.为邮件列表添加成员,您可以选择通过下图按钮批量把域内的用户添加成为列表成员。

    邮件列表中添加新成员
     

     

    2.在【成员->添加】新建列表成员中输入一个邮件地址来添加列表成员,这个邮件地址也可以是外域邮件地址。

    邮件列表默认是拒收来自非列表成员的邮件的。因为当邮件列表创建完成后,列表成员(有发送权限)就可以给这个列表发送邮件了。只需要在收件人地址处填写列表名称(以example@horayang.club为例),那么列表中的成员test4@horayang.club、test5@horayang.club、test6@horayang.club以及1037215772@qq.com都能收到这封邮件。

    当然你也可以将邮件列表开放给非本域用户,那么1037215772@qq.com这个邮箱可能就会收不到这个非本域用户发送给这个列表的邮件,因为这样对于qq来说这是一封类似于中继的邮件,它是断然会拒绝这封邮件的。

    3.从文本文件中导入列表成员,文件由逗号分隔各字段。(比如:一个以逗号分隔的文件CSV)。每个条目必须位于自身的行上,而且其所有字段必须由逗号分隔。 此外,文件的首行(基线)必须列出字段名称,以及各字段在余下行中的顺序。 其中一个字段必须叫做“电子邮件”并包含电子邮件地址。 还有两个可选字段: "全名”和“类型”。 全名是列表成员的姓名。 “类型”可以含有以下值: "只读”、“仅发送”、“摘要”或“常规”。 导入程序将忽略其余所有字段。

    例如:

    “电子邮件”、“全名”、“类型”、“地址”、“电话”
    “user01@horayang.com”、“test”、“摘要”、“123 Street St”、“111111111”

     

     

    成员类型设置

    添加完成员后,我们可以根据成员的属性来设置邮件收发权限。

    成员类型分为四种:

    1.Nomal(常规):该成员可以正常收发列表邮件。

    2.Digest(摘要):该成员可以收发列表邮件,不过接收到的邮件将以摘要格式显示。

    若要使得摘要类型生效,必须在摘要设置中启动该选项:

    3.Read only(只读):该成员将接收列表的邮件,不过无法向其发送邮件。

    4.Post only(仅发送):该成员可以向列表发送邮件,但无法接收任何邮件。

    邮件列表成员类型

    修改成员类型的办法:

    1.通过下方的切换按钮来切换成员类型

    2.双击成员在跳出的【新建列表成员】框中更改类型

    3.用记事本打开\MDaemon\App目录下的*.grp文件(以example@horayang.club.grp为例),拉至记事本最下方可以看见列表成员的相关信息(类型、邮件地址、全名),通过修改它们的前缀来修改它们的类型。

    !表示摘要

    ^表示只读

    $表示仅发送

     

     

    邮件列表的备份

    只需要将\MDaemon\App目录下的*.grp文件备份即可。

     

    了解更多MDaemon相关信息,欢迎进入MDaemon网站

    展开全文
  • JavaMail学习五 创建邮件内容

    千次阅读 2016-01-10 17:35:12
    1.基本原理: JavaMail使用javax.mail.Message类来表示一...如果要创建一封只包含文本内容的简单邮件,那么只需要使用到MimeMessage类就可以,但要创建一封包含内嵌资源或多个附件的复杂邮件时,那么则需要同时使用到Ja

    1.基本原理:

    JavaMail使用javax.mail.Message类来表示一封邮件,Message类是一个抽象类,应用程序需要使用其之类javax.mail.internet.MimeMessage来创建Message类的实例对象。如果要创建一封只包含文本内容的简单邮件,那么只需要使用到MimeMessage类就可以,但要创建一封包含内嵌资源或多个附件的复杂邮件时,那么则需要同时使用到JavaMailAPI中的MimeMessage,javax.mail.internet.MimeBodyPart和javax.mail.internet.MimeMultipart等类。

    ~~MimeMessage类表示整封邮件

    ~~MimeBodyPart类表示邮件的一个MIME消息

    ~~MimeMultipart类表示一个由多个MIME消息组合而成的组合MIME消息

     

    这三个类的关系如下图所示:

     

     

     

     

    1.复杂邮件和简单邮件一样的都是使用MimeMessage对象来表示整封邮件

    2.对于复杂邮件的邮件体,不能在简单的调用MimeMessage.setText方法生成,而是要用一个MimeMultiPart对象来表示,并通过MimeMultiPart.setContent(MultiPar mp)方法设置到MimeMessage对象中。

    3.MimeMultipart对象用来组合多个MIME消息,其中的每个MIME消息分别用一个MimeBodyPart对象来表示,并通过MimeMultipart.addBodyPart(BodyPart bp)方法加入到MimeMultipart对象中。

    4.如果MimeBodyPart对象表示的MIME消息又是一个组合MIME消息,那么它的内容又需要使用一个MimeMultipart对象来表示,并通过MimeBodyPart.setContent(Multipart mp)

    方法设置到MimeBodyPart对象中。与代表整封邮件的MimeMultipart对象一样,这个MimeMultipart对象中的每一个组成单元也可以分别由一个MimeBodyPart对象表示。

    可见,不管邮件体中的数据层次关系如何复杂,我们都可以使用MimeBodyPart,MimeMultipart对象这种互相嵌套关系,来组织并且封装复杂邮件中的各个邮件数据。

     

    2.与邮件内容相关的API类图:

    虽然应用程序开发者在使用JavaMailAPI创建邮件内容时,通常只需要使用MimeMessage,MimeBodyPart和MimeMultipart这3个主要的类,但是了解他们的类继承关系也是必要的。下图列出了这三个类的继承关系以及常用方法。

     

     

    从上图可以看出一些信息来:

    1.MimeMessage类和MimeBodyPart类都实现了part接口,part接口代表了一个具体的MIME消息,它定义了一系列用于设置和获取消息头信息和消息体数据的方法,例如图中的setHeader,setContent方法分别用于设置消息头和消息体,getHeader和getContent分别用于获取消息头和消息体

    2.MimeMessage类还继承了Message抽象类,Message类在Part接口的基础上增加了多个描述邮件信息的方法,例如setFrom和setSubject方法,分别用于设置邮件的发送人和邮件的主题。

    3.MimeMultipart类用来组合多个MIME消息,它继承了抽象类MultiPart,MultiPart类中定义了addBodyPart和getBodyPart等方法,用于完成对MIME组合消息的相关操作。

     

    3.InternetAddress类:

    javax.mail.internet.InternetAddress类用于表示电子邮件的地址,邮件中的发件人和收件人地址都是用这个类表示的,下面是InternetAddress中常用的方法:

    3.1构造函数:

    InternetAddress类的构造函数有两种常用的重载形式,它们的语法定义如下:

    ~~public InternetAddress();

    ~~public InternetAddress(java.lang.String address)

    第一个构造函数为类缺省的构造函数, 用这个构造函数创建的InternetAddress对象需要使用setAddress方法来设置邮件地址,第二个构造函数直接使用一个代表邮件地址的字符串创建InternetAddress类的实例对象。

    3.2.getAddress方法:

    getAddress方法的语法定义如下:

    public java.lang.String  getAddress()

    getAddress方法以字符串形式返回InternetAddress对象中定义的邮件地址。

    3.3 parse方法

    parse方法是一个静态方法,它的语义定义如下,

    public static InternetAddress[] parse(public java.lang.String addressList)

    parse方法以“,”号为解析分隔符,解析由多个邮件地址组成的字符串,并把解析出来的邮件地址保存到一个InternetAddress类型的数组对象中,参数addressList表示有多个邮件地址组成,并用“,”作为其分隔符的字符串。

     

    3.4  MimeMessage类:

    javax.mail.internet.MimeMessage类表示一封MIME邮件,它继承了抽象类Message并实现了MimePart接口。MimeMessage类不仅实现了顶层Part接口中定义的方法,它还从Message类中继承了多个setXX和getXX方法,这些方法用于设置和获取整封邮件中的邮件头字段,

     1.Message.RecipientType内部类:

    Message.RecipientType类表示收件人的类型,它是Message类中的一个静态内部类。Message.RecipientType类中定义了如下三个变量:

    ~~TO代表邮件的主要接受者

    ~~CC代表邮件的抄送接收者

    ~~BCC代表邮件的暗送接受者

    Message.RecipientType类中定义了TO,CC,BCC等三个常量的类型就是Message.RecipientType,这种应用于java.awt.Color类中定义的BLACK,BLUE常量相似,Color类中定义的BLACK,BLUE等常量的类型就是Color.

     

    2.MimeMessage类的构造函数:

    MimeMessage类的构造函数有多中重载形式,其中与创建新邮件相关的构造函数有两种重载形式,它们的语法定义如下:

    ~~public MimeMessage(Session session)

    ~~public MimeMessage(Session session,java.io.InputStream is)

    第一个MimeMessage构造函数需要一个Session对象作为参数,JavaMail中定义的Session对象用于收集客户端与邮件服务器之间网络连接信息和定义整个邮件程序所需要的环境信息,这些信息作为Session对象的属性保存在Session对象中,例如,Seesion对象的“mail.smtp.host‘属性表示SMTP服务器的主机名,“mail.user”表示邮件用户等。第二个MimeMessage构造函数除了需要一个Session对象作为参数以外,它还接受一个InputStream类型的输入流对象,第二个MimeMessage构造函数创建的MimeMessage对象将从这个输入流对象中整封邮件的内容。

    3.setFrom方法:

    setFrom方法用于设置MimeMessage对象中的发件人地址,它有两种重载形式,它们的语法定义如下:

    ~~public  abstract  void setFrom();

    ~~public abstract  void setFrom(Address address);

    第一个方法使用Session对象中的“mail.user”属性值来设置MimeMessage对象的from字段,第二个方法用于指定address对象来设置MimeMessage对象的from字段。

     

    4.setRecipient与setRecipients方法:

    setRecipient和setRecipients方法分别用于设置一个和一组收件人的地址,它们的语法定义如下:

    ~~public void setRecipient(Message.RecipientType type , Address address);

    ~~public abstract void setRecipients(Message.RecipientType type,Address[] address);

    这两个方法的第一个参数都是type,用于指定收件人的类型,setRecipient方法的第二个参数用于指定一个收件人的地址,setRecipients方法的第二个参数address是一个数组,可以通过这个数组来指定多个收件人的地址,使用setRecipient和setRecipients方法设置收件人的地址时,设置的新地址将代替MimeMessage对象中原有的相同类型的地址。

     

    5.addRecipient与addRecipients方法:

    addRecipient和addRecipients方法分别用于增加一个和一组收件人的地址,他们的语法定义如下:

    ~~public void addRecipient(Message.RecipientType type , Address address);

    ~~public abstract void addRecipients(Message.RecipientType type,Address[] address);

    使用addRecipient和addRecipients设置收件人地址时,设置的新地址将会追加到MimeMessage对象中的原有相同类型的地址上,而不是替代原有的相同类型的地址

     

    6.setSendDate方法:

    setSendDate方法用于设置MimeMessage对象中的邮件发送日期,它的语义如下:

    ~~public abstract void  setSendDate(java.util.Date date);

    7.setSubject方法:

    setSubject方法用于设置MimeMessage对象中的邮件主题,他有两种重载形式,他们的语法定义如下:

    ~~public void serSubject(java.lang.String subject);

    ~~public void serSubject(java.lang.String subject,java.lang.String charset);

    如果邮件中含有非ASCII码的字符,那么在subject头字段中需要对邮件主题的原始内容进行BASE64和Quote-printable编码,BASE64或Quote-printable编码并不是对字符进行编码,而是对代表字符的某种字符集数据进行编码,由于同一个字符存在着多种字符集,因此在BASE64和Quote-printable编码时需要指定对字符的哪种字符集进行编码。第一个方法选择操作系统的缺省字符集,第二个方法可以让编程人员指定编码的字符集信息。

     

    8.addHeader和setHeader方法:

    addHeader和setHeader方法用于设置当前MIME消息的某个消息头信息,他们的语法定义如下:

    ~~public void addHeader(java.lang.String name,java.lang.String value);

    ~~public void setHeader(java.lang.String name,java.lang.String value);

    其中参数name为要设置的消息头字段的名称,value为要设置的消息头字段的值

    只是对于已经存在的某个名称的消息头,addHeader方法是在原有设置值的基础上加上新值,而setHeader方法则是使用新值代替原来的设置值,前面讲解的setFrom,setRecipient,和addRecipient,setSendDate,setSubject等方法内部都在调用addHeader和setHeader方法,他们是针对特定的头字段而对addHeader和setHeader方法调用提供的一种简化手段。

    9.setContent方法:

    setContent方法用于设置MimeMessage对象的邮件体,他有两种重载形式,他们的语法定义如下:

    ~~public void setContent(java.lang.Object obj,java.lang.String type);

    ~~public void setContent(Multipart mp);

    这两个方法都是从part接口中继承过来的,第一个方法设置一个指定MIME类型java对象作为MimeMessage对象的邮件体,这个对象必须能为指定的MIME类型的数据处理器处理,读者只有熟悉JAF的有关知识,才能理解这个方法的使用,第二个方法设置一个Multipart类型的对象作为MimeMessage对象的邮件体,也就是将邮件体设置为主类型为“multipart”的某种MIME组合消息。

    10.setText方法:

    setText方法用于将MIME消息体设置为一个简单的纯文本内容,他的语法定义如下:

    ~~public void setText(java.lang.String text);

    参数text用于指定作为消息体内容的字符串,这个方法也自动将消息体的MIME类型设置为“text/plain”。

    11.setFlag方法:

    setFlag方法主要用于在邮件接收程序中,它用于为邮件设置一个邮件标记,例如删除标记,已读标记。它的语法定义如下:

    ~~public void setFlag(Flags.Flag flag,boolean set);

    参数flag表示设置的标记类别,它的类型为Flags.Flag,Flags.Flag是一个表示邮件标记的内部类,这个内部类定义了6个常量来表示6中不同的标记,例如后面表示删除标记的常量为Flags.Flag.DELETE,表示已读标记的常量为Flags.Flag.SEEN.参数set为“true”时表示设置邮件的指定标记,为“false”时表示清除邮件上的指定标记。

    12.saveChanges方法:

    saveChanges方法用于更新并保存MimeMessage对象中的数据,它的语法定义如下:

    ~~public abstract void saveChanges();

    邮件发送程序发送MimeMessage对象中封装的邮件内容前,通常需要调用这个方法,以便根据MimeMessage对象中保存的信息生成最终的邮件内容。如果修改了这个MimeMessage对象中的内容,也需要注意调用saveChanges方法以便修改生效。

    13.writeTo方法:

    writeTo方法用于把MimeMessage对象中的数据输出到一个RFC822格式的输出流中,它有两种重载形式,它的语法定义如下:

    ~~public void writeTo(OutputStream os);

    ~~public void writeTo(OutputStream os,String[]  ingoreList);

    第二个方法的第二个参数用于指定输出时忽略那些消息头字段。

     

    下面我们来利用上面的理论知识来创建一个简单的纯文本邮件:

    package com.jt.mail;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;
    import java.util.Properties;

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

    /**
     * @author jt
     *2016-1-11 下午7:07:21
     *创建简单的纯文本邮件
     */
    public class TextMessage {

     
     
     /**
      * @param args
      * @throws MessagingException
      * @throws IOException
      * @throws FileNotFoundException
      */
     public static void main(String[] args) throws MessagingException, FileNotFoundException, IOException {
      //定义邮件的发送人,收件人,邮件主题和邮件正文
      String from="发件人的邮件地址";
      String to="收件人的邮件地址";
      String subject="text";
      String body="text!!!";
      
      //创建Session实例对象
      Session session=Session.getDefaultInstance(new Properties());
      //创建MimeMessage实例对象
      MimeMessage msg=new MimeMessage(session);
      //设置发件人
      msg.setFrom(new InternetAddress(from));
      //设置收件人
      msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
      //设置发送日期
      msg.setSentDate(new Date());
      //设置邮件主题
      msg.setSubject(subject);
      //设置邮件正文
      msg.setText(body);
      //保存最终生成的邮件内容
      msg.saveChanges();
      //把邮件内容写入到文件中
      msg.writeTo(new FileOutputStream("E://test.eml"));
     }

    }

     

    创建HTML格式的邮件:

    package com.jt.mail;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;
    import java.util.Properties;

    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMessage.RecipientType;

    /**
     * @author jt
     *2016-1-11 下午7:40:41
     *创建html格式的邮件
     */
    public class HTMLMessage {

     /**
      * @param args
      * @throws MessagingException
      * @throws IOException
      * @throws FileNotFoundException
      */
     public static void main(String[] args) throws MessagingException, FileNotFoundException, IOException {
      String from="发件人邮件地址";
      String to="收件人邮件地址";
      String subject="textHTML";
      String body="<h4>欢迎大家阅读我的邮件</h4>"+"<img src='E:\\我的照片\\桂林\\aff\\jt.jpg'>";
      
      //创建Session对象
      Session session=Session.getDefaultInstance(new Properties());
      //创建MimeMessage实例对象
      MimeMessage msg=new MimeMessage(session);
      //设置发件人
      msg.setFrom(new InternetAddress(from));
      //设置收件热
      msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
      //设置发送邮件日期
      msg.setSentDate(new Date());
      //设置邮件主题
      msg.setSubject(subject);
      //设置邮件体
      msg.setContent(body,"text/html;charset=gb2312;");
      //保存邮件
      msg.saveChanges();
      //将邮件写入文件中
      msg.writeTo(new FileOutputStream("E://htmlTest.eml"));
     }

    }

    扩展怎么判断邮件是否被阅读?

    由于HTML文档中引用的图片可以通过一个Web服务器端程序动态创建,因此,在HTML邮件正文中使用<img src="">标签引用图片时,可以故意让标签的src属性指向一个用于记录访问者IP地址或者统计邮件被阅读次数的Web服务器。这样,当邮件的接受者使用邮件阅读程序阅读该邮件时,只要用户接受邮件正文中的图像引用,邮件阅读程序就会去访问<img src="">标签中的src属性指向的Web服务器程序,在Web服务器程序中可以得知邮件已经被收件人阅读,并可进一步完成更多的功能。例如,记录邮件阅读者的IP地址,收集有效的邮件地址,统计群发邮件被阅读的次数,等等。关于如何让HTML文档中的<img src="">标签中的src属性指向一个Web服务器程序的应用,请参看《深入体验javaWeb开发内幕--核心基础》一书中的5.6.5节“图像访问计数器的讲解”。

    可见在HTMlL格式的邮件正文中使用一些特殊的HTML标签,可以是邮件完成一些特殊的功能。正因为如此,现在大多数的邮件阅读程序都屏蔽了这些特殊的HTML标签,例如在HTML格式的邮件中使用<link>标签应用外部的css文件就是一种无效行为。

     

     

    7.MimeBodyPart类:ji

    javax.mail.internet.MimeBodyPart类表示MIME邮件中的一个MIME消息,MimeBodyPart类和MimeMessage类一样,都实现了Part接口,它们都具有Part接口定义的方法。

    7.1 构造函数:

    MimeBodyPart类的构造函数有两种重载形式,它们的语法定义如下:

    ~~public MimeBodyPart();

    ~~public MimeBodyPart(java.io.InputStream  is);

    第一个方法为MimeBodyPart类缺省的构造函数,第二个方法为从指定的输入流中读取数据,并使读取到的数据填充MimeBodyPart实例对象。

    7.2 setDateHeader方法:

    setDateHeader方法用于当前的MimeBodyPart对象设置一个DateHeader对象,MimeBodyPart对象在生成具体的MIME消息时,将调用DateHeader对象的方法获取所需的数据信息,setDateHeader的语法定义如下:

    ~~public void setDateHeader(javax.activation.DateHeader dh);

    DateHeader是JAF中定义的一个类,它是一种数据访问接口,它可以读取各种数据源中的数据和返回数据源的MIME类型。

    7.3setContentID方法:

    setContentID方法用于设置消息头中的Content-ID头字段,它的语法定义如下:

    ~~public void setContentID(java.lang.String cid);

    其中参数cid表示当前MIME消息指定的唯一标识号,即Content-ID头字段的值。

    7.4  setDisposition方法:

    setDisposition方法用于设置消息头中的Content-Disposition头字段,如果当前MIME消息作为邮件中的附件部分,那么就可以使用这个方法来进行设置。setDisposition方法的语法定义如下:

    ~~public void  setDisposition(java.lang.String disposition);

    其中参数disposition为Content-Disposition头字段的值。

    7.5 setFileName方法:

    如果当前的MIME方法可以关联一个文件名,则可以使用setFileName方法来指定该文件名,setFileName的语法定义如下:

    ~~public void setFileName(java.lang.String filename);

    setFileName方法通常由于设置邮件的附件名,即用于设置Content-Disposition头字段中的filename参数,如果没有提前设置Content-Disposition头字段,setFileName方法会自动生成相应的Content-Disposition头字段。

     

    8.MimeMultipart类:

    javax.mail.internet.MimeMultipart是抽象类Multipart的实现子类,它用来组合多个MIME消息,一个MimeMultipart实例对象代表一个主类型为multipart的组合MIME消息,其中可以保存多个代表MIME消息的MimeBodyPart对象。

    8.1  构造函数:

    MimeMultipart类有两种重载形式的构造函数,它们的语法定义如下:

    ~~public MimeMultipart();

    ~~public MimeMultipart(java.lang.String subtype);

    第一个方法是MimeMultipart类的缺省函数,其实例对象的MIME类型为“multipart/mixed”,即该MimeMultipart对象代表的组合MIME消息的“Content-Type”属性值为“multipart/mixed”,第二个构造方法指定“multipart”的一个子类型来创建MimeMultipart类的实例对象。“multipart”有三中常用的子类型:“mixed”,"related","alternative"

    8.2 addBodyPart方法:

    addBodyPart方法有两种重载形式,它们的语法定义如下:

    ~~public void addBodyPart(BodyPart part);

    ~~public void addBodyPart(BodyPart part,int index);

    第一个方法增加一个BodyPart对象到MimeMultipart对象中,新增的BodyPart对象位于MimeMultipart对象中原有的BodyPart对象列表的尾部。第二个方法将一个BodyPart对象增加到MimeMultipart对象中,参数index指定了该BodyPart对象插入到MimeMultipart对象中的原有BodyPart对象列表位置。

    8.3 setSubType方法:

    setSubType方法用于设置MimeMultipart对象的Content-Type属性的MIME子类型,该方法的语法定义如下:

    ~~setSubType(java.lang.String subType);

    MimeMultipart对象对应的MIME消息的主类型固定为“multipat”,子类型有“mixed”,"related","alternative"三种。

    8.4 getContentType方法:

    getContentType方法由于返回MimeMultipart对象的Content-Type属性,它的语义定义如下:

    ~~public java.lang.String getContentType();

    8.5 getBodyPart方法:

    getBodyPart方法返回MimeMultipart对象中的某个BodyPart对象,它有两种重载形式:

    ~~public BodyPart  getBodyPart(int index);

    ~~public BodyPart  getBodyPart(java.lang.String CID);

    第一个返回MimeMultipart对象中的位于某个位置的BodyPart 对象,第二个方法返回MimeMultipart对象中的具有某个指定的Content-ID头字段值的BodyPart 对象,即返回的BodyPart 对象的Content-ID头字段值和指定CID相同。

    8.6  getContent方法:

    getContent方法用于返回MimeMultipart对象中保存的BodyPart 对象的个数,它的语法定义如下:

    ~~public int getCount();

     

    9.创建复杂的邮件体:

    package com.jt.mail;

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Date;
    import java.util.Properties;

    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Message;
    import javax.mail.MessagingException;
    import javax.mail.Session;
    import javax.mail.internet.AddressException;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMessage.RecipientType;
    import javax.mail.internet.MimeMultipart;

    /**
     * @author jt
     *2016-1-11 下午10:00:31
     *创建内嵌图片的复杂的邮件
     */
    public class PictureMessage {

     /**
      * @param args
      * @throws MessagingException
      * @throws AddressException
      * @throws IOException
      * @throws FileNotFoundException
      */
     public static void main(String[] args) throws AddressException, MessagingException, FileNotFoundException, IOException {
      //定义邮件的属性,如发件人,收件人,邮件主题,邮件日期
      String from="651101060@qq.com";
      String to="jiangtao7913@sina.com";
      String subject="HTML邮件";
      String body="<a href='http://www.baidu.com'>"
      +"欢迎大家来我们的网站"+"</a><br/>"
      +"<img src=\"cid:1\">";
      
      //创建Session对象
      Session session=Session.getDefaultInstance(new Properties());
      //创建MimeMessage对象
      MimeMessage msg=new MimeMessage(session);
      //设置邮件发送人
      msg.setFrom(new InternetAddress(from));
      //设置邮件收件人
      msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
      //设置邮件日期
      msg.setSentDate(new Date());
      //设置邮件主题
      msg.setSubject(subject);
      //创建一个子类型为“related”的MimeMultipart对象
      MimeMultipart multipart=new MimeMultipart("related");
      //创建一个表示HTML正文的MimeBodyMultipart对象,并将它加入到MimeMultipart对象中
      MimeBodyPart htmlMultipart=new MimeBodyPart();
      htmlMultipart.setContent(body,"text/html;charset=gb2312;");
      multipart.addBodyPart(htmlMultipart);
      
      //创建一个图片内容的MimeBodyPart对象,并将他们加入到前面创建的MimeMultipart中
      MimeBodyPart gifMultipart=new MimeBodyPart();
      FileDataSource fds=new FileDataSource("E:\\我的照片\\桂林\\aff\\jt.jpg");
      gifMultipart.setDataHandler(new DataHandler(fds));
      gifMultipart.setContentID("1");
      multipart.addBodyPart(gifMultipart);
      //将MimeMultipart对象设置为整个邮件的内容,要注意saveChanges进行更新
      msg.setContent(multipart);
      msg.saveChanges();
      
      //把文件写入到文件中
      msg.writeTo(new FileOutputStream("E://pic.eml"));
      
     }

    }

     

    10.创建包含图片和附件的邮件

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • Kaldi中国用户邮件列表

    千次阅读 2014-04-09 13:55:27
    为方便Kaldi用户用中文讨论问题,并记录讨论过程,我创建邮件列表

    为方便Kaldi用户用中文讨论问题,并记录讨论过程,我创建了邮件列表。

    @wbglearn


    如何加入:

    要加入列表请访问:

    https://lists.sourceforge.net/lists/listinfo/kaldichina-users

    填写信息并确认后,你会收到一封邮件,包括如何使用的说明


    如何发信:

    如果要往列表发信,只要发送到

    kaldichina-users@lists.sourceforge.net

    所有列表成员就都会收到你的邮件。


    如何回复:

    收到邮件列表的来信后,如参与讨论问题,只需回复邮件即可。


    如何查询:

    邮件列表的好处之一是所有的记录有迹可循,避免重复提问。

    要查看以往的邮件内容,可以前往

    http://sourceforge.net/p/kaldichina/mailman/kaldichina-users/

    (汇总的时间会比邮件延迟一些,刚发的邮件不会立即出现在汇总中)


    =============== 我是分割线=============

    使用邮件列表的好处:

    清晰- 语言文字是经过一定斟酌梳理过的,这样描述问题更清楚,提问和讨论更高效。适合进行深入的技术讨论。
    高效- 和IM沟通不同,邮件可以直切正题。有效减少重复沟通,也能让更多人检查。
    有凭有据- IM沟通完后,如果双方没有在本地记录,很难供他人查询。邮件是个很好的节点,显示往来邮件,知道每次讨论了什么内容,问题是否解决,清晰可见。
    随时随地- 通过使用客户端或提醒机制,使用电脑时可以第一时间获取邮件,即使出门在外也能方便收发,或标记重要紧急度稍后处理。

    (以上内容参考知乎)


    展开全文
  • 几个Linux邮件列表

    千次阅读 2013-01-08 10:11:52
    上个网真是难啊。 最近移动打电话忽悠我说送个手机邮箱给我,后来才知道139邮箱本来就有免费版的,真无耻。 ...我想用手机收点信息也不错,可也没人给我发邮件。...列举几个不错的邮件列表,应该都是用同一种程
  • 申请linux邮件列表

    千次阅读 2012-03-04 22:23:44
    1、http://vger.kernel.org/vger-lists.html这个是linux邮件列表的主要网址,在这里选取一个分支(自己关注的模块),然后点击 subscribe,即可发送邮件。当然再此之前,需要申请一个邮箱,最好单独用一个,我用的...
  • 一个简单的PHP邮件列表管理器

    千次阅读 2015-09-11 10:22:47
    1、需求分析 管理员应该能够建立和修改邮件内容。...用户应该能够取消一个邮件列表的订阅。用户应该能够根据个人喜好以HTML格式或纯文本格式存储新闻信件。处于安全的原因,用户应该不能将邮件发送到列表,或者不
  • Outlook 创建邮件模板 (zz)

    千次阅读 2012-04-10 11:41:39
    //z 2012-6-1 15:53:07 PM IS2120@CSDN 召回邮件 已发送邮件-打开发送的邮件 文件-重发或撤回-撤回该邮件 //z 2012-4-10 11:46:06 AM IS2120@CSDN...要创建邮件模板,第一步是创建一个新的邮件。在文件夹视图中点
  • html创建电子邮件链接教程

    千次阅读 2020-06-27 16:36:42
    我们可以使用标签作为电子邮件标签,此时我们还需要配合使用“mailto:电子邮件地址”以及href属性才可以创建电子邮件链接。 以下就是<a>标签使用mailto而不是使用http协议的语法。 基本语法: > <ahref...
  • 给WordPress增加QQ邮件列表订阅

    千次阅读 2013-06-11 11:40:19
    为此腾讯推出了QQ邮件列表服务,QQ邮件列表是一项免费的群发邮件服务。通过它,您可以在网站上加入订阅入口,来获取您的订户。用户订阅后,就能方便的给他们群发邮件了。 因此,QQ邮件列表订阅的作用主要有: 如果...
  • 使用MailCore创建iOS邮件客户端(一)

    万次阅读 热门讨论 2012-12-05 10:13:58
    本教程以IMAP 为例,教你如何利用MailCore框架创建自己的iOS邮件客户端。邮件客户端一般会包含收、发邮件两个功能。相对于发送邮件,接收邮件要复杂得多。本文采用IMAP协议实现邮件的接收,正如Mail程序所做的一样。...
  • 一直到现在,我都没有发现国内讨论Apache Mina高性能通信框架研究的好地方。...想来想去,还是觉得使用邮件列表的方式是最好的,再加上google现在提供的邮件列表很不错,所以,就决定用google创建一个专门
  • 使用MailCore创建iOS邮件客户端(二)

    千次阅读 2012-12-05 10:25:15
    三、列出邮件列表列出某个文件夹路径(folderPath)下的所有邮件列表,如下图所示:代码如下:CTCoreAccount* acc=UIAppDelegate.account; if (!acc || ![acc isConnected]) { NSLog(@"连接丢失,重新连接IMAP...
  • 创建和添加电子邮件签名

    千次阅读 2013-06-11 20:22:14
    可以为电子邮件创建个性化签名,签名可包含文字、图像、电子名片、徽标,甚至是手写签名的图像。  注释 本文适用于 Microsoft Outlook 2010。此信息也适用于 Microsoft Office Outlook 2003 和 Microsoft ...
  • 关于邮件列表讨论的几点感想

    万次阅读 热门讨论 2008-09-08 11:23:00
    关于邮件列表讨论的几点感想By 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba)TopLanguage(http://groups.google.com/group/pongba) 每一个论坛,每一个邮件列表,在其生命历程中都会出现无数次的争吵;...
  • 最近开始了python爬虫的学习,这里带来利用python实现网易163邮箱个人收件箱邮件列表信息的爬取的小项目,刚开始学习,写的不好的地方,望大神指正,诚恳学习。 主要内容 模拟163邮箱登录 获取登录后的收件箱页面 ...
  • 输入电子邮件正确格式Do you want to create an email newsletter for ... 您是否要为您的网站,博客或电子商务业务创建电子邮件通讯? An email newsletter helps you stay in touch with your users, bring th...
  • 建立邮件列表的九种主要资源

    千次阅读 2008-01-09 17:30:00
    邮件列表意味着在线生意的一切,建立一个可以反复发送信息的列表是取得成功的关键,下面是建立邮件列表的九个基本资源。1.现有客户 这是可充分利用的最好的资源,对于所有生意来说最困难的事情就是寻找新顾客,不仅...
  • 不再使用 Google Groups 的邮件列表了,装上了 Mailman (http://lists.solidot.org ), 主要用于团队交流,Slash 中文版交流和Solidot 的用户之间的交流。虽然 Google Groups 很酷,但我们觉得使用强大的 Mailman...
  • Linux创建定时清理邮件日志

    千次阅读 2017-12-20 10:19:12
    在root目录下创建sh文件 vim auto_clear_mail_log.sh 写入 rm -f /val/mail/root 再创建任务文件 vim root_clear_mail_log.sh 写入 0 0 * * * /root/auto_clear_mail_log.sh 添加到任务 crontab root_clear...
  • 邢晓宁时间:2007年10月31日声明:版权没有,任你转载标题:Linux服务器SMTP端口被盗用发送垃圾邮件,又GMAIL/Yahoo等列入垃圾邮件列表之后的对策 1.问题描述:公司邮件服务器被挂成肉鸡,无限制的向外发送垃
  • 为什么电子邮件列表对在线业务有利 (Why email lists are beneficial for online businesses) For many online businesses, the initial impetus is to boost traffic and get as many visitors to your website as...
  • 电子邮件营销实例---粽子

    千次阅读 2019-11-22 09:28:50
    1、设计一封电子邮件,创建邮件列表,进行电子邮箱营销。 E-mail营销的一般流程: (1)邮件地址的选择 (2)邮件内容 (3)确保邮件内容的准确性 (4)电子邮件的发送 2、设计一份促销广告文案,选择一种网络广告形式进行...
  • outlook 创建通讯组列表

    千次阅读 2014-11-26 16:18:19
    有时候需要发邮件给一部分的对象,这时候可以建立通讯组列表。 方法: 1. 点选 "联系人" 栏。 2. 选择“通讯组列表" 3. 追加 "名称" 和成员即可。
  • 一直到现在,我都没有发现国内讨论...想来想去,还是觉得使用邮件列表的方式是最好的,再加上google现在提供的邮件列表很不错,所以,就决定用google创建一个专门用于讨论高性能网络编程的邮件列表,我想,这可能是国内
  • 点击创建触发器按钮,我们按照以下方式进行创建,其中表达式是不需要手动去写,是可以自动生成的,点击add按钮: 点击后的页面如下: 触发器创建之后我们可以看到列表中有一个我们刚刚创建的触发器,
  • python群发邮件的代码——收件邮箱是列表形式 ## 导入 smtplib发送模块和email创建模块 import smtplib from email.mime.text import MIMEText # 发送邮件内容为文本形式时导入 from email.header import Header #给...
  • 创建和打印大宗邮件的标签--Word篇

    千次阅读 2007-06-11 14:07:00
    资源内容: 如果希望使用地址标签向地址列表发送大宗邮件,可以使用邮件合并创建地址标签表。每个标签都包含列表中的一个地址。邮件合并过程需要执行以下所有步骤: 设置标签。设置一次标签布局,邮件合并中的所有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 157,950
精华内容 63,180
关键字:

如何创建邮件列表