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

用JavaMail的API发送邮件

    博客分类:
  • Java
阅读更多
1、MimeMessage的包装类
public class SimpleMessageWraper {
	private Session session;
	private MimeMessage mimeMessage;
	private Multipart multipart = new MimeMultipart();;
	
	public Session getSession() {
		return session;
	}

	public MimeMessage getMimeMessage() {
		return mimeMessage;
	}
	
	private String arrayToString(String[] array){
		String s = "";
		if(array != null && array.length > 0){
			for(int i=0;i<array.length;i++){
				if(s == ""){
					s = array[i].trim();
				}else{
					s += "," + array[i].trim();
				}
			}
		}
		return s;
	}
	
	public SimpleMessageWraper(Properties props){
        session = Session.getInstance(props);
        session.setDebug(false);
        
		mimeMessage = new MimeMessage(session);
	}
	
	public void setFrom(String from)throws MessagingException{
		mimeMessage.setFrom(new InternetAddress(from));
        mimeMessage.saveChanges();
	}
	
	public void setTo(String[] toArray)throws MessagingException{
		String s = arrayToString(toArray);
		Address[] addresses = InternetAddress.parse(s);
		mimeMessage.setRecipients(Message.RecipientType.TO, addresses);
        mimeMessage.saveChanges();
	}
	
	public void setCc(String[] ccArray)throws MessagingException{
		String s = arrayToString(ccArray);
		Address[] addresses = InternetAddress.parse(s);
		mimeMessage.setRecipients(Message.RecipientType.CC, addresses);
        mimeMessage.saveChanges();
	}
	
	public void setSubject(String subject)throws MessagingException{
		mimeMessage.setSubject(subject);
        mimeMessage.saveChanges();
	}
	
	public void setSentDate(Date date)throws MessagingException{
		mimeMessage.setSentDate(date);
        mimeMessage.saveChanges();
	}

    public void setText(String text)throws MessagingException{
    	MimeBodyPart mimeBodyPart = new MimeBodyPart(); 
    	mimeBodyPart.setText(text);
    	multipart.addBodyPart(mimeBodyPart);
    	mimeMessage.setContent(multipart);
        mimeMessage.saveChanges();
    }
    
    public void addAttactment(File file)throws MessagingException,UnsupportedEncodingException{
    	if(file == null) return;
    	
    	MimeBodyPart mimeBodyPart = new MimeBodyPart(); 
    	mimeBodyPart.setFileName(MimeUtility.encodeText(file.getName(), "GBK", "B")); //对邮件头采用base64方式编码
    	mimeBodyPart.setDataHandler(new DataHandler(new FileDataSource(file))); 
    	multipart.addBodyPart(mimeBodyPart); 
    	mimeMessage.setContent(multipart);
        mimeMessage.saveChanges();
    }
}


2、发送邮件的工具类
public class SimpleMailFactory {
	private static SimpleMailConfig simpleMailConfig = null;
	private static Properties props = null;
	
	static{
	    //取得包含邮件配置信息的bean对象
		simpleMailConfig = (SimpleMailConfig)SpringContextUtil.getBean(Constants.simpleMailConfigBeanName);
		
		props = new Properties();
        props.put("mail.smtp.host", simpleMailConfig.getHost());
        props.put("mail.smtp.auth", simpleMailConfig.getAuth());
	}
	
	/**
	 * 功能:取得邮件消息对象的包装器
	 */
	public static SimpleMessageWraper getSimpleMessageWraper(){
		return new SimpleMessageWraper(props);
	}

	/**
	 * 功能:邮件发送
	 */
	public static void send(SimpleMessageWraper messageWraper)throws Exception{
		MimeMessage mimeMessage = messageWraper.getMimeMessage();
        Transport transport = messageWraper.getSession().getTransport(simpleMailConfig.getTransport());
        
        transport.connect(simpleMailConfig.getHost(), simpleMailConfig.getUsername(), simpleMailConfig.getPassword());
        transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
        transport.close();        
	}
}


3、包含邮件配置信息的bean对象
<bean id="simpleMailConfig" class="com.cjm.common.mail.SimpleMailConfig">
	<property name="host" value="smtp.163.com"/>
	<property name="username" value="uid"/>
	<property name="password" value="pwd"/>
	<property name="auth" value="true"/>
</bean>


4、实例代码
SimpleMessageWraper w1 = SimpleMailFactory.getSimpleMessageWraper();
w1.setFrom("ServerMailAddress@163.com");
w1.setTo(new String[]{"TargetAddress@139.com"});
w1.setSubject("标题");
w1.setText("邮件内容");
w1.addAttactment(new File("c:\\附件.txt"));
SimpleMailFactory.send(w1);


5、Spring下发送邮件
用MimeMessageHelper发送html内容和附件
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
	<property name="defaultEncoding" value="GBK" />
	<property name="host" value="${mail.host}" />
	<property name="port" value="${mail.port}" />
	<property name="username" value="${mail.username}" />
	<property name="password" value="${mail.password}" />
	<property name="javaMailProperties">
		<props>
			<prop key="mail.smtp.auth">true</prop>
			<prop key="mail.debug">false</prop>
			<prop key="mail.smtp.timeout">0</prop>
		</props>
	</property>
</bean>


@Autowired
private JavaMailSender mailSender;

MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true);

helper.setFrom(fromAddress);
helper.setTo(toAddress);
helper.setSubject("Subject");
helper.setText(content, true); //true表示 发送html内容

//ClassPathResource file = new ClassPathResource("123.jpg");  
//helper.addAttachment("123.jpg", file);  

FileSystemResource file = new FileSystemResource("C:\\123.jpg");  
helper.addInline("file", file);

mailSender.send(message);
2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics