`

Javamail 发送带附件邮件

阅读更多
使用时,要注意与其它mail包的冲突问题,如geronimo-javamail_1.4_spec-1.3.jar会导致邮件发出去的都是编码数据
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
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;
import javax.mail.internet.MimeUtility;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 常规JavaMail 邮件发送实用类
*/
public final class MailUtil {
 
 private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
 
    // 邮件发送者地址
    private static final String SenderEmailAddr = "homlly@foxmail.com";
    // 邮件发送者邮箱用户
    private static final String SMTPUserName = "homlly";
    
    // 邮件发送者邮箱密码
    private static final String SMTPPassword = "xxxxxxxx";
    // 邮件发送者邮箱SMTP服务器
    private static final String SMTPServerName = "smtp.foxmail.com";
    // 传输类型
    private static final String TransportType = "smtp";
    // 属性
    private static Properties props;
    /**
     * 私有构造函数,防止外界新建本实用类的实例,因为直接使用MailUtil.sendMail发送邮件即可
     *
     */
    private MailUtil() {
    }
    /**
     * 静态构造器
     */
    static {
        MailUtil.props = new Properties();
        // 存储发送邮件服务器的信息
        MailUtil.props.put("mail.smtp.host", MailUtil.SMTPServerName);
        // 同时通过验证
        MailUtil.props.put("mail.smtp.auth", "true");
    }
    /**
     * 发送邮件
     * @param emailAddr:收信人邮件地址
     * @param mailTitle:邮件标题
     * @param mailConcept:邮件内容 支持html标签
     * @param 邮件附件URI
     */
    public static boolean sendMail(String emailAddr, String mailTitle,
            String mailConcept,String URI) {
        Session s = Session.getInstance(MailUtil.props, null);
        s.setDebug(false);
        Message message = new MimeMessage(s);
        try {
            // 设置发件人
            Address from = new InternetAddress(MailUtil.SenderEmailAddr);
            message.setFrom(from);
            // 设置收件人
            Address to = new InternetAddress(emailAddr);
            message.setRecipient(Message.RecipientType.TO, to);
            // 设置主题
            message.setSubject(mailTitle);
           
          Multipart mm=new MimeMultipart();
          //设置信件文本内容
          BodyPart mdp=new MimeBodyPart();
//          mdp.setContent(arg0)
          mdp.setContent(mailConcept,"text/plain;charset=UTF-8");
          mm.addBodyPart(mdp);
         
         
         
         
          //设置信件的附件
          mdp=new MimeBodyPart();
          FileDataSource fds=new FileDataSource(URI);
          DataHandler dh=new DataHandler(fds);
          mdp.setFileName((MimeUtility.encodeText("口径维护历史信息.xls", "UTF-8", "B")));
          mdp.setDataHandler(dh);
          mm.addBodyPart(mdp);
         
          message.setContent(mm);
         
            // 设置发信时间
            message.setSentDate(new Date());
            // 存储邮件信息
            message.saveChanges();
            Transport transport = s.getTransport(MailUtil.TransportType);
            // 要填入你的用户名和密码;
            transport.connect(MailUtil.SMTPServerName, MailUtil.SMTPUserName, MailUtil.SMTPPassword);
            // 发送邮件,其中第二个参数是所有已设好的收件人地址
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            logger.debug("发送邮件,邮件地址:" + emailAddr + " 标题:" + mailTitle  + " 内容:" + mailConcept + "成功!");
            return true;
        } catch (Exception e) {
         logger.debug(e.getMessage());
         logger.debug("发送邮件,邮件地址:" + emailAddr + " 标题:" + mailTitle + " 内容:" + mailConcept + "失败! 原因是" + e.getMessage());
         return false;
        }
    }
}
分享到:
评论
2 楼 smallplum 2012-09-03  
wangxin0ldrs 写道
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
这俩个包怎么导入的,
我导入你的程序后
private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
LoggerFactory.getLogger(MailUtil.class)会报错,还有
logger.debug("发送邮件,邮件地址:" + emailAddr + " 标题:" + mailTitle  + " 内容:" + mailConcept + "成功!");
debug也会报错
怎么解决,你都导入了哪些jar包,能贴上来吗


添加 slf4j-api-1.5.8.jar
以及log4j的jar log4j-1.2.16.jar
1 楼 wangxin0ldrs 2012-09-03  
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
这俩个包怎么导入的,
我导入你的程序后
private static Logger logger = LoggerFactory.getLogger(MailUtil.class);
LoggerFactory.getLogger(MailUtil.class)会报错,还有
logger.debug("发送邮件,邮件地址:" + emailAddr + " 标题:" + mailTitle  + " 内容:" + mailConcept + "成功!");
debug也会报错
怎么解决,你都导入了哪些jar包,能贴上来吗

相关推荐

    06 使用JavaMail发送带附件的邮件.exe

    06 使用JavaMail发送带附件的邮件.exe06 使用JavaMail发送带附件的邮件.exe

    JavaMail(3)——发送带附件的邮件.docx

    下面将详细解释如何利用JavaMail发送带有附件的邮件。 首先,你需要导入以下关键的JavaMail和Java Activation Framework (JAF) 类: ```java import javax.mail.*; import javax.mail.internet.*; import javax....

    JavaMail发送带附件的邮件

    以上就是使用JavaMail发送带附件的邮件的基本流程。需要注意的是,实际应用中可能需要处理更多复杂情况,例如错误处理、SSL/TLS加密连接、多部分邮件(包含HTML内容和文本内容)等。同时,确保你有正确的SMTP服务器...

    Gmail邮件通过JavaMail发送(不带附件与带一个附件)

    在使用JavaMail发送邮件前,你需要在项目中引入相关的依赖包。在描述中提到的"javamail"可能是指JavaMail的jar包,这是进行邮件操作的基础。确保你的项目已包含以下两个关键的JavaMail库: 1. `javax.mail-api.jar`...

    JavaMail发送邮件(文本、html、附件)

    以上就是使用JavaMail发送文本、HTML和附件邮件的详细步骤。在实际应用中,还需要考虑错误处理、邮件格式验证、多线程发送等复杂情况。同时,对于企业级应用,通常会使用邮件服务提供商如SendGrid、Mailgun等,它们...

    javamail发送邮件(带附件)

    这个资源提供了一个具体的示例,展示了如何使用JavaMail API 来发送带有附件的邮件。以下是对这个主题的详细解释: 首先,你需要理解JavaMail的核心组件。`javax.mail` 和 `javax.mail.internet` 包含了发送邮件所...

    javaMail发送邮件 发送成功 收不到邮件 或收到邮件无主题无收件人乱码

    ### JavaMail发送邮件时遇到的问题及解决方法 在使用JavaMail进行邮件发送的过程中,可能会遇到以下几种常见问题:发送成功但收件方未收到邮件、邮件收到后无主题或无收件人信息以及邮件内容出现乱码等情况。本文将...

    james和javamail实现邮件收发(带发送附件)

    下面是一个简化的JavaMail发送邮件的过程: 1. **配置邮件会话**:首先,我们需要创建一个`Properties`对象,并设置SMTP服务器的相关参数,如主机名和端口号。然后,通过`Session.getInstance()`方法初始化一个邮件...

    JavaMail邮件发送(带附件)

    JavaMail邮件发送(带附件)

    javamail发送、接收邮件

    通过解析给定文件的标题、描述、标签及部分内容,我们可以深入探讨javamail发送与接收邮件的详细教程,以及如何利用JavaMail API实现邮件功能。 ### javamail发送、接收邮件 JavaMail API是由Sun Microsystems开发...

    java email 发送带附件的邮件

    以上就是使用JavaMail发送带附件邮件的基本流程。需要注意的是,实际应用中可能还需要处理异常、超时和其他复杂情况。此外,对于大型附件或大量邮件,应考虑使用连接池和异步处理以提高性能。 在阅读和实现上述代码...

    JavaMail发送邮件的例子

    下面我们将深入探讨JavaMail的基本概念、如何使用JavaMail发送邮件以及在Struts2框架中的实现方式。 JavaMail API主要包括以下组件: 1. `javax.mail.Session`:是JavaMail的核心,负责配置邮件服务器的信息,如...

    用javaMail发送邮件

    下面是一个简单的JavaMail发送邮件的步骤: 1. **导入必要的库**:首先,在项目中导入`mail.jar`和`activation.jar`,确保编译和运行时能够访问到这些库。 2. **配置邮件会话**:创建一个`Properties`对象,设置...

    javamail发送邮件.zip

    这个“javamail发送邮件.zip”压缩包显然包含了一个示例项目,演示如何使用JavaMail API发送包含正文文本、图片以及附件的邮件。以下是对这个主题的详细解释: 1. **JavaMail API**: JavaMail API 是一组接口和类...

    javamail 可带附件demo 源码

    JavaMail 是一个开源库,它提供了在Java应用程序中发送和接收电子邮件的标准API。这个源码示例是关于如何使用JavaMail来发送带有附件...这个源码示例是一个很好的起点,帮助开发者理解并应用JavaMail发送带附件的邮件。

    javamail发送html邮件

    JavaMail API 是一个用于发送、接收电子邮件的标准接口集合,它支持多种协议(如 SMTP、IMAP 和 POP3),使得 Java 应用程序能够轻松地发送和接收电子邮件。 #### 二、发送 HTML 格式的邮件 在实际应用中,经常需要...

    java 发送附件mail

    总结一下,Java发送带有附件的邮件涉及到JavaMail API的使用,包括配置SMTP服务器、创建邮件对象、添加内容和附件,以及发送邮件等步骤。理解这些步骤和相关类的作用是实现此功能的关键。在处理不同类型的邮件时,...

    利用JavaMail发送邮件的实例,可以直接运行

    8. **使用JavaMail发送HTML邮件**:通过设置`MimeMessage`的`setContent()`方法,可以发送包含HTML的邮件。 ```java message.setContent("<h1>HTML邮件标题</h1><p>这是HTML邮件正文。</p>", "text/html;charset=...

Global site tag (gtag.js) - Google Analytics