`
sunties7
  • 浏览: 9222 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java自带的Java-mail框架 163 邮件发送,支持多附件,没中文乱码

    博客分类:
  • java
阅读更多
转载http://blog.csdn.net/zhoushuai520/article/details/7640330

sendMail.java
package com.sunties.shopping.util.mail;
import java.util.Properties;
public class sendMail {

    // 发送邮件的服务器的IP和端口 
    private String mailServerHost;
    private String mailServerPort = "25";
    // 邮件发送者的地址 
    private String fromAddress;
    // 邮件接收者的地址 
    private String toAddress;
    // 登陆邮件发送服务器的用户名和密码 
    private String userName;
    private String password;
    // 是否需要身份验证 
    private boolean validate = false;
    // 邮件主题 
    private String subject;
    // 邮件的文本内容 
    private String content;
    // 邮件附件的文件名 
    private String[] attachFileNames;
    //邮件附件在本机的地址和文件名字一一对应
    private String[] FileNamesAdr;
  
    public Properties getProperties() {
        Properties p = new Properties();
        p.put("mail.smtp.host", this.mailServerHost);
        p.put("mail.smtp.port", this.mailServerPort);
        p.put("mail.smtp.auth", validate ? "true" : "false");
        return p;
    }

    public String getMailServerHost() {
        return mailServerHost;
    }

    public void setMailServerHost(String mailServerHost) {
        this.mailServerHost = mailServerHost;
    }

    public String getMailServerPort() {
        return mailServerPort;
    }

    public void setMailServerPort(String mailServerPort) {
        this.mailServerPort = mailServerPort;
    }

    public boolean isValidate() {
        return validate;
    }

    public void setValidate(boolean validate) {
        this.validate = validate;
    }

    public String[] getAttachFileNames() {
        return attachFileNames;
    }

    public void setAttachFileNames(String[] fileNames) {
        this.attachFileNames = fileNames;
    }

    public String getFromAddress() {
        return fromAddress;
    }

    public void setFromAddress(String fromAddress) {
        this.fromAddress = fromAddress;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getToAddress() {
        return toAddress;
    }

    public void setToAddress(String toAddress) {
        this.toAddress = toAddress;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String textContent) {
        this.content = textContent;
    }

    public void setFileNamesAdr(String[] fileNamesAdr) {
        this.FileNamesAdr = fileNamesAdr;
    }

    public String[] getFileNamesAdr() {
        return FileNamesAdr;
    }
}
SimpleMailSender.java

package com.sunties.shopping.util.mail;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

/**
* 简单邮件(不带附件的邮件)发送器
* @author sunties
*
*/
public class SimpleMailSender {
    /**
     * 以文本格式发送邮件
     *
     * @param mailInfo
     *            待发送的邮件的信息
     */
    public boolean sendTextMail(sendMail mailInfo) {
        // 判断是否需要身份认证 
        MyAuthenticator authenticator = null;
        Properties pro = mailInfo.getProperties();
        if (mailInfo.isValidate()) {
            // 如果需要身份认证,则创建一个密码验证器 
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
        Session sendMailSession = Session
                .getDefaultInstance(pro, authenticator);
        try {
            // 根据session创建一个邮件消息 
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址 
            Address from = new InternetAddress(mailInfo.getFromAddress());
            // 设置邮件消息的发送者 
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中 
            Address to = new InternetAddress(mailInfo.getToAddress());
            mailMessage.setRecipient(Message.RecipientType.TO, to);
            // 设置邮件消息的主题 
            mailMessage.setSubject(mailInfo.getSubject());
            // 设置邮件消息发送的时间 
            mailMessage.setSentDate(new Date());
            // 设置邮件消息的主要内容 
            String mailContent = mailInfo.getContent();
            mailMessage.setText(mailContent);
            // 发送邮件 
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    /**
     * 以HTML格式发送邮件
     *
     * @param mailInfo
     *            待发送的邮件信息
     */
    public boolean sendHtmlMail(sendMail mailInfo) throws UnsupportedEncodingException {
        // 判断是否需要身份认证 
        MyAuthenticator authenticator = null;
        Properties pro = mailInfo.getProperties();
        // 如果需要身份认证,则创建一个密码验证器 
        if (mailInfo.isValidate()) {
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
        Session sendMailSession = Session
                .getDefaultInstance(pro, authenticator);
        try {
            // 根据session创建一个邮件消息 
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址 
            Address from = new InternetAddress(mailInfo.getFromAddress());
            // 设置邮件消息的发送者 
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中 
            Address to = new InternetAddress(mailInfo.getToAddress());
            // Message.RecipientType.TO属性表示接收者的类型为TO 
            mailMessage.setRecipient(Message.RecipientType.TO, to);
            // 设置邮件消息的主题 
            mailMessage.setSubject(mailInfo.getSubject());
            // 设置邮件消息发送的时间 
            mailMessage.setSentDate(new Date());

            // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 
            Multipart mainPart = new MimeMultipart();
            // 创建一个包含HTML内容的MimeBodyPart 
            BodyPart html = new MimeBodyPart();
            // 设置HTML内容 
            html.setContent(mailInfo.getContent(), "text/html; charset=UTF-8");
            mainPart.addBodyPart(html);

            //设置信件的附件(用本地上的文件作为附件)
            for(int i=0;i<mailInfo.getAttachFileNames().length;i++){
                html = new MimeBodyPart();
                FileDataSource fds = new FileDataSource(mailInfo.getFileNamesAdr()[i]);
                DataHandler dh = new DataHandler(fds);
                html.setFileName(MimeUtility.encodeText(mailInfo.getAttachFileNames()[i]));
                html.setDataHandler(dh);
                mainPart.addBodyPart(html);
            }

            // 将MiniMultipart对象设置为邮件内容 
            mailMessage.setContent(mainPart);
            mailMessage.saveChanges();

            // 发送邮件 
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }


MyAuthenticator.java
package com.sunties.shopping.util.mail;

import javax.mail.*;

public class MyAuthenticator extends Authenticator {

    String userName = null;
    String password = null;

    public MyAuthenticator() {
    }

    public MyAuthenticator(String username, String password) {
        this.userName = username;
        this.password = password;
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName, password);
    }

testMail.java
package com.sunties.shopping.test;

import com.sunties.shopping.util.mail.SimpleMailSender;
import com.sunties.shopping.util.mail.sendMail;

import java.io.UnsupportedEncodingException;

public class testMail {

    public static void main(String[] args) throws UnsupportedEncodingException {
        testMail.send_163();
    }

    // 163邮箱 
    public static void send_163() throws UnsupportedEncodingException {
        // 这个类主要是设置邮件 
        sendMail mailInfo = new sendMail();
        String FileNames[] = {"32位64位2合一的win7.rar"};
        String FileNamesAdr[] = {"D:\\32位64位2合一的win7.rar"};
        mailInfo.setMailServerHost("smtp.163.com");
        mailInfo.setMailServerPort("25");
        mailInfo.setValidate(true);
        mailInfo.setUserName("18825111743@163.com"); // 实际发送者
        mailInfo.setPassword("790872");// 您的邮箱密码
        mailInfo.setFromAddress("18825111743@163.com"); // 设置发送人邮箱地址
        mailInfo.setToAddress("1079087231@qq.com"); // 设置接受者邮箱地址
        mailInfo.setSubject("设置邮箱标题");
        mailInfo.setContent("设置邮箱内容<b>h6</b>");
        mailInfo.setAttachFileNames(FileNames);
        mailInfo.setFileNamesAdr(FileNamesAdr);
        // 这个类主要来发送邮件 
        SimpleMailSender sms = new SimpleMailSender();
        //sms.sendTextMail(mailInfo); // 发送文体格式
        sms.sendHtmlMail(mailInfo); // 发送html格式
    }
分享到:
评论

相关推荐

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

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

    Java避免UTF-8的csv文件打开中文出现乱码的方法

    Java避免UTF-8的csv文件打开中文出现乱码的方法 在Java中,避免UTF-8的csv文件打开中文出现乱码的方法是非常重要的。csv文件是 comma separated values 的缩写,常用于数据交换和导入导出操作。然而,在Java中读取...

    利用Java发送邮件(含附件)的例子

    在Java编程中,发送带有附件的邮件是一项常见的任务,尤其对于自动化报告或者系统通知非常有用。以下是如何利用Java实现这一功能的详细步骤和关键知识点: 首先,你需要配置邮件发送的相关属性,这通常通过一个...

    java中文乱码问题详解--- java中文乱码问题详解

    ### Java中文乱码问题详解 #### 一、中文问题的来源与背景 计算机技术发展初期,操作系统主要支持单字节的ASCII字符集。随着全球化进程加快和技术进步,为支持多种语言,尤其是双字节编码的语言(如中文),提出了...

    KETTLE 发送邮件乱码修正

    我当前调试的是kettle 5.4.0.1版本,修复job中发送邮件时候中文乱码问题: 替换 data-integration\lib\kettle-engine-5.4.0.1-130.jar 这个jar包下 data-integration\lib\kettle-engine-5.4.0.1-130.jar\org\...

    java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!

    java socket发送SMTP邮件,支持SSL,支持发附件,抄送且发送的邮件标题内容都无乱码!

    fckeditor(java版-解决中文附件名称乱码问题)

    通过以上知识点的深入理解和应用,可以有效地解决“fckeditor(java版-解决中文附件名称乱码问题)”这个问题,确保用户能够正常上传并保存带有中文名称的附件,从而提高产品在中文环境下的可用性和用户体验。

    Java中文乱码浅析及解决方案

    Java 中文乱码问题是一个常见的编程困扰,尤其对于处理中文字符的Java程序而言。这个问题通常源于字符编码的不一致,即不同环节采用的字符编码标准不统一。本文将深入探讨这一问题,并提供相应的解决方案。 首先,...

    java 编码 UTF-8、ISO-8859-1、GBK

    GBK 是针对中文的一种编码,它是GB2312的扩展,包含了更多的汉字和其他字符,但在处理非中文字符时可能会出现问题。 在Java中,影响字符编码正确显示的因素主要包括: 1. **数据库连接方式**:数据库的连接参数应...

    java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose

    java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose java aspose word 上传到服务器 导出的word 中文字体乱码 ...

    java中文乱码之解决URL中文乱码问题的方法

    在Java开发中,遇到中文乱码问题是一种常见的挑战,特别是在处理URL时。URL中文乱码问题主要是由于URL编码和解码过程中的不一致导致的。下面将详细介绍如何解决这个问题,并探讨几种常用的方法。 首先,我们需要...

    Java关于中文乱码问题的多种解决方法

    总的来说,解决Java中的中文乱码问题需要从多方面考虑,包括文件操作、网络通信、数据库交互、IDE配置、字符串转换等多个环节。理解字符集的概念,合理设置编码,是避免乱码的关键。在实际开发中,养成良好的编码...

    Java生成pdf文件,解决中文乱码问题.pdf

    Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...

    jd-gui 1.6.6 -- java反编译中文复制无乱码

    3. **中文支持**:jd-gui 1.6.6版本解决了中文字符在反编译过程中可能出现的乱码问题,确保了阅读体验。 4. **代码高亮**:反编译出的源代码具有语法高亮,使代码更易读,提高开发者的效率。 5. **复制无乱码**:...

    java下载附件中文乱码.xls

    java下载附件中文乱码

    JAVA反编译文件解决中文乱码

    总结,解决JAVA反编译文件时的中文乱码问题,关键在于确定源代码的原始编码,并确保反编译工具支持该编码。同时,良好的编码规范和项目配置也是避免此类问题的重要措施。通过上述方法,开发者可以更顺利地进行Java反...

    Java中压缩与解压--中文文件名乱码解决办法

    ### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...

    javadbf.jar-修复中文乱码-部分生僻字显示成问号的问题

    用于在java代码中写入dbf文件并输出文件。在原代码的使用过程中,对于姓名字段中不常见的汉字,会变成“?”号,比如“张芃”,会变成“张?”,这个包是修复这个问题的。

    java读写csv文件,中文乱码问题

    下面我们将深入探讨如何在Java中正确地读取和写入CSV文件,以及解决中文乱码的问题。 1. **字符编码的理解**: - 在处理中文字符时,必须确保使用正确的字符编码,例如UTF-8。UTF-8是一种广泛支持的编码格式,可以...

Global site tag (gtag.js) - Google Analytics