发送电子邮件 java mail

发送电子邮件 java mail

请看下面文章。

spring3.0发送电子邮件(velocity模板,带附件,群发,解决乱码)最终版:

Spring Mail  :

项目中代码:

apache mail:

package com.dfyl.util;

/**
 * Created by IntelliJ IDEA.
 * User: timchao
 * Date: 11/9/27
 * Time: 下午2:37
 * To change this template use File | Settings | File Templates.
 */

import org.apache.commons.mail.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import java.io.IOException;
import java.util.Properties;

public class SendMail {
    public String smtpHostName = "smtp.qiye.163.com";//"smtp.gmail.com";
    public String authserName = "[DMS]iMove server";
    public String authuser = "[email protected]";
    public String authpwd = "iMpwd2011";
    public int smtpPort = 25;
    public String sslsmtpPort = "465";
    public String Charset = "UTF-8";
    public String subject = "iTest";
    public String message = "iTest!!";
    public String sendToName = "Dear Engineer";
    public String sendTo = "[email protected]";
    public boolean debug = false;
    public boolean ssl = false;

    /**
     * Send Mail
     */
    public void Send() {
        final Log log = LogFactory.getLog(SendMail.class);
        Properties property = new Properties();
        try {
            property.load(SendMail.class.getResourceAsStream("/mail.properties"));
            smtpHostName = property.getProperty("smtpHostName").trim();
            authserName = property.getProperty("authserName").trim();
            authuser = property.getProperty("authuser").trim();
            authpwd = property.getProperty("authpwd").trim();
            smtpPort = Integer.parseInt(property.getProperty("smtpPort").trim());
            sslsmtpPort = property.getProperty("sslsmtpPort").trim();
            Charset = property.getProperty("Charset").trim();
            sendTo = property.getProperty("sendTo").trim();
            debug = Boolean.parseBoolean(property.getProperty("debug").trim());
            ssl = Boolean.parseBoolean(property.getProperty("ssl").trim());

        } catch (IOException e) {
            //e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        Email email = new HtmlEmail();
        email.setHostName(smtpHostName);
        email.setAuthenticator(new DefaultAuthenticator(authuser, authpwd));
        email.setDebug(debug);
        if (ssl) {
            email.setSSL(ssl);
            email.setSslSmtpPort(sslsmtpPort);
        } else {
            email.setSmtpPort(smtpPort);
        }
        email.setCharset(Charset);
        email.setSubject(subject);

        try {
            email.setFrom(authuser, authserName);
            email.setMsg(message);
            email.addTo(sendTo, sendToName);
            email.send();
        } catch (EmailException ee) {
            //ee.printStackTrace();
        }

    }

}


spring mail:

package com.dfyl.util;

import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

import freemarker.template.SimpleHash;
import freemarker.template.TemplateException;

public class SendMail {
	/**
	 * @author xblang
	 * 发送普通文本的邮件
	 * @param sentTO
	 * @param from
	 * @param subject
	 * @param content
	 * @param username
	 * @param password
	 */
	public static void sendTextMail(String[] sentTO,String from,String subject,String content,String username,String password) {
		JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 
	    // 设定mail server  
	    senderImpl.setHost( "smtp.qiye.163.com" );
	    // 建立邮件消息  
	    SimpleMailMessage mailMessage = new  SimpleMailMessage(); 
	     // 设置收件人,寄件人 用数组发送多个邮件
	     // String[] array = new String[]    {"[email protected]","[email protected]"};    
	     // mailMessage.setTo(array);  
	    mailMessage.setTo(sentTO); 
	    mailMessage.setFrom(from); 
	    mailMessage.setSubject(subject); 
	    mailMessage.setText(content); 
	    senderImpl.setUsername(username);  //  根据自己的情况,设置username 
	    senderImpl.setPassword(password);  //  根据自己的情况, 设置password 
		Properties prop = new Properties();
		prop.setProperty("mail.smtp.auth","true");  //  将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确 
//		prop.put("mail.smtp.timeout","25000"); 
		senderImpl.setJavaMailProperties(prop);  
	     // 发送邮件  
	    senderImpl.send(mailMessage); 
	    System.out.println( " 邮件发送成功.. " ); 
	}
	
	/**
	 * @author xblang
	 * 发送Html文本的邮件
	 * @param sentTO 字符串数组,为收邮件的邮箱地址
	 * @param from 发件人地址
	 * @param subject 邮件主题
	 * @param content 邮件内容
	 * @param username 发件人用户名
	 * @param password 发件人密码
	 * @throws MessagingException
	 */
	public static void sendHtmlMail(String templet,String[] sentTO,String from,String subject,List errorList,String username,String password) throws MessagingException{ 
		FreemarkGenerator fm =  new FreemarkGenerator();
		SimpleHash aMap = new SimpleHash();
		aMap.put("errorList", errorList);
		aMap.put("error_size", errorList.size());
		String content = "";
		try {
			System.out.println(fm.createString(templet, aMap));
			content = fm.createString(templet, aMap);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}
		JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 
	    //设定mail server 
	    try {
			senderImpl.setHost(PropertyUtil.getMailValue("smtpHostName"));
		} catch (BaseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    //建立邮件消息,发送简单邮件和html邮件的区别 
	    MimeMessage mailMessage = senderImpl.createMimeMessage(); 
	    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8"); 
	    //设置收件人,寄件人 
	    messageHelper.setTo(sentTO); 
	    messageHelper.setFrom(from); 
	    messageHelper.setSubject(subject); 
	    //true 表示启动HTML格式的邮件 
	    messageHelper.setText(content,true); 
	    senderImpl.setUsername(username) ; // 根据自己的情况,设置username
	    senderImpl.setPassword(password) ; // 根据自己的情况, 设置password
	    Properties prop = new Properties() ;
	    prop.put("mail.smtp.auth", "true") ; // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
//	    prop.put("mail.smtp.timeout", "25000") ; 
	    senderImpl.setJavaMailProperties(prop); 
	    //发送邮件 
	    senderImpl.send(mailMessage); 
	    System.out.println("邮件发送成功.."); 
	}
	
	
	/**
	 * @author xblang
	 * 发送Html文本的邮件
	 * @param sentTO 字符串数组,为收邮件的邮箱地址
	 * @param from 发件人地址
	 * @param subject 邮件主题
	 * @param content 邮件内容
	 * @param username 发件人用户名
	 * @param password 发件人密码
	 * @throws MessagingException
	 */
	public static void sendHtmlMail(String templet , String subject, SimpleHash aMap,String username,String password) throws MessagingException{ 
		FreemarkGenerator fm =  new FreemarkGenerator();
		String sentTo_DFYL = null;
		try {
			 sentTo_DFYL = PropertyUtil.getMailValue("sendTo");
		} catch (BaseException e1) {
			e1.printStackTrace();
		}
		String[] sentTO = {sentTo_DFYL};
		String content = "";
		try {
			content = fm.createString(templet, aMap);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}
		JavaMailSenderImpl senderImpl = new JavaMailSenderImpl(); 
	    //设定mail server 
	    try {
			senderImpl.setHost(PropertyUtil.getMailValue("smtpHostName"));
		} catch (BaseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    //建立邮件消息,发送简单邮件和html邮件的区别 
	    MimeMessage mailMessage = senderImpl.createMimeMessage(); 
	    MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage,true,"UTF-8"); 
	    //设置收件人,寄件人 
	    messageHelper.setTo(sentTO); 
	    try {
			messageHelper.setFrom(PropertyUtil.getMailValue("authuser"));
		} catch (BaseException e) {
			e.printStackTrace();
		} 
	    messageHelper.setSubject(subject); 
	    //true 表示启动HTML格式的邮件 
	    messageHelper.setText(content,true); 
	    senderImpl.setUsername(username) ; // 根据自己的情况,设置username
	    senderImpl.setPassword(password) ; // 根据自己的情况, 设置password
	    Properties prop = new Properties() ;
	    prop.put("mail.smtp.auth", "true") ; // 将这个参数设为true,让服务器进行认证,认证用户名和密码是否正确
//	    prop.put("mail.smtp.timeout", "25000") ; 
	    senderImpl.setJavaMailProperties(prop); 
	    //发送邮件 
	    senderImpl.send(mailMessage); 
	    System.out.println("邮件发送成功.."); 
	}
}

Read more

Python for循环——《跟老吕学Python编程》附录资料

Python for循环——《跟老吕学Python编程》附录资料

Python for循环——《跟老吕学Python编程》附录资料 * * Python for循环 Python for循环是编程中常用的控制流语句,用于重复执行一段代码块,直到满足指定的条件。它特别适合处理列表、元组等可迭代对象中的元素,也可以用于生成序列、处理文件等场景。 Python for循环语法 在Python编程语言中,for循环是一种用于遍历可迭代对象(如列表、元组、字典、字符串等)的基本结构。通过使用for循环,我们可以轻松地访问和处理序列中的每个元素。 基本的for循环语法如下: for item in iterable: # 执行语句 pass 在这里,item是一个临时变量,用于在每次迭代中存储Iterable(可迭代对象)的当前元素。# 执行语句部分是你希望在每次迭代中执行的代码块。 例如,如果我们有一个包含数字的列表,并希望打印每个数字,我们可以这样做: numbers = [1, 2, 3, 4, 5] for number

By Ne0inhk
Python for循环中的else语句——《跟老吕学Python编程》附录资料

Python for循环中的else语句——《跟老吕学Python编程》附录资料

Python for循环中的else语句——《跟老吕学Python编程》附录资料 * Python for循环中的else语句 在Python中,for循环的else语句是一个相对不常见但非常有用的特性。当我们谈到for循环时,我们通常会想到循环体(即缩进的代码块)以及可能包含的break语句。但是,for循环还可以有一个else语句,这个else语句会在循环正常结束(即不是通过break语句退出的)时执行。 这个特性在编写需要处理完整数据集或集合的代码时特别有用。 例如,当你想检查一个列表是否包含某个元素时,你可以使用for循环的else语句来避免在找到元素后继续搜索整个列表。 下面是一个简单的例子,展示了如何使用for循环的else语句来检查一个列表中是否存在某个元素: my_list = [1, 2, 3, 4, 5] search_value = 3 found = False for item in my_list: if item == search_value: found = True break els

By Ne0inhk
Python while循环详解——《跟老吕学Python编程》附录资料

Python while循环详解——《跟老吕学Python编程》附录资料

Python while循环详解——《跟老吕学Python编程》附录资料 * * Python while循环详解 在Python编程中,while循环是一种控制流语句,它允许代码块重复执行,只要给定的条件为真。while循环的基本语法如下: while 条件: # 循环体:要重复执行的代码块 # 如果条件为真,则执行这里的代码 # 如果条件为假,则跳出循环 while循环会一直执行其下的代码块,直到给定的条件不再满足。这意味着,如果条件一开始就不为真,那么while`循环下的代码块将不会被执行。 示例 以下是一个简单的while循环示例,它会打印数字0到9: count = 0 while count < 10: print(count) count += 1 # 更新条件 在这个例子中,条件是count < 10。当count的值小于10时,循环继续执行。每次循环,都会打印count的当前值,并将count增加1。当count达到10时,条件不再满足,

By Ne0inhk
Python break语句详解——《跟老吕学Python编程》附录资料

Python break语句详解——《跟老吕学Python编程》附录资料

Python break语句详解——《跟老吕学Python编程》附录资料 * Python break语句详解 在Python编程中,break语句是一个控制流语句,用于在循环中任何时候停止或中断当前循环的执行。当break语句被执行时,循环会立即停止,程序流程会继续在循环结构之后的第一条语句。 以下是一个简单的例子,演示了如何在for循环中使用break语句: # 定义一个列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 使用for循环遍历列表 for number in numbers: # 如果数字等于5,则中断循环 if number == 5: break # 打印当前数字 print(number) 在这个例子中,for循环会遍历numbers列表中的每一个元素。当number变量的值等于5时,if语句的条件成立,break语句会被执行,for循环会立即停止,不再继续遍历列表中的剩余元素。因此,输出结果只会包含列表中的前四个元素:1,

By Ne0inhk