zoukankan      html  css  js  c++  java
  • javaMai+Springl实现给QQ邮箱发邮件(带附件,html格式)

           以前的时候想着java发邮件很简单,因为当时使用的是outlook实现的,有兴趣的可以去看看之前的两篇博客文章,1.使用java底层实现邮件的发送(含测试,源码)   和 2.使用Spring实现邮件的发送(含测试,注释,源码)  

    就在今天,遇到的需求是给一个QQ邮箱发一份邮件,刚看到需求一看,这不很简单么,随便改改就行了。

            于是我花了15分钟写出来全部代码,但是花了2小时解决了代码的bug.........自己都有点佩服了!下面我来说说我的bug是怎么遇到的和怎么解决的。

           第一,发给QQ邮箱与outlook不一样的是,<property name="host" value="smtp.qq.com"></property>,而outlook的则是<property name="host" value="mail.com"></property>

          第二,<property name="password" value="***********"></property>,而Outlook的密码可以直接就是你当初设置的密码,但是在这里是QQ邮箱的授权码,所谓的授权码,就是你开启了QQ邮箱的


    之后,会出来的。

         第三,设置

    <property name="javaMailProperties">
                <props>
                    <prop key="mail.smtp.auth">true</prop>
                    <prop key="mail.smtp.ssl.enable">true</prop>
                </props>
    </property>

    而outlook可以没有他,直接就可以。QQ邮箱的绝对不行,就这句话折腾了我好久,这句话的意思就是SSL加密。

       第四,这个与outlook一样,添加附件是不能添加文件夹的!不能添加文件夹的不能添加文件夹的!!!一定要记住,别自作聪明的找方法,比如像我一样吧JavaMail里面的Folder抽象类里面的方法挨个试了试。。。。。没有半点用,还浪费了好多时间,你要想添加多个附件的话你丫的可以打包啊,我当初怎么就没有想到呢,只要有个后缀名就可以添加,打包成.zip  或者  .rar 都可以,调用的类是:

    FileDataSource file1 = new FileDataSource(new File("E:\Edisk\java\springDemo.rar"));
                helper.addAttachment(file1.getName(), file1);

    接下来我上一下源码吧:

    applicationContext.xml里面的配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans
    	xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:p="http://www.springframework.org/schema/p"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
    	
    	<bean id="javaMail" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    		<property name="host" value="smtp.qq.com"></property>
    		<property name="defaultEncoding" value="utf-8"></property>
    		<property name="username" value="2451999120"></property>
    		<property name="password" value="dldadavrtfbedida"></property>
    		<property name="protocol" value="smtp"></property>
    		<property name="javaMailProperties">
    			<props>
    				<prop key="mail.smtp.auth">true</prop>
    				<prop key="mail.smtp.ssl.enable">true</prop> 
    			</props>
    		</property>
    	</bean>
    	
    	<bean id="mailService" class="org.service.impl.MailServiceImpl">
    		<property name="javaMailSender" ref="javaMail"></property>
    	</bean>
    
    </beans>

    MailServiceImpl实现类里面的代码:

     /**  
    * @Title: MailServiceImpl.java
    * @Package org.service.impl
    * @Description: TODO该方法的主要作用:
    * @author A18ccms A18ccms_gmail_com  
    * @date 2017-6-1 下午12:17:11
    * @version V1.0  
    */
    package org.service.impl;
    
    import java.io.File;
    
    import javax.activation.FileDataSource;
    import javax.mail.Folder;
    import javax.mail.MessagingException;
    import javax.mail.Store;
    import javax.mail.internet.MimeMessage;
    
    import org.service.IMailService;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
     /**   
     *    
     * 项目名称:spring_Cchop8   
     * 类名称:MailServiceImpl   
     * 类描述:   
     * 创建人:Mu Xiongxiong  
     * 创建时间:2017-6-1 下午12:17:11   
     * 修改人:Mu Xiongxiong   
     * 修改时间:2017-6-1 下午12:17:11   
     * 修改备注:   
     * @version    
     *    
     */
    public class MailServiceImpl implements IMailService {
    
    	private JavaMailSender javaMailSender;
    	
    	/**(非 Javadoc)
    	 * <p>Title: sendMail</p>
    	 * <p>Description(描述): </p>
    	 * @see org.service.IMailService#sendMail()
    	 */
    
    	@Override
    	public void sendMail() {
    		//发送带格式的邮件
    		MimeMessage message = javaMailSender.createMimeMessage();
    		try {
    			MimeMessageHelper helper	= new MimeMessageHelper(message,true,"utf-8");
    			helper.setFrom("2451999120@qq.com");
    			helper.setTo("1513614984@qq.com");
    			helper.setSubject("穆雄雄");
    			helper.setText("<span style='color:red'>》》》这是原来的字体</span>  <strong>》》》这是加粗的字体</strong>  >>>这个是链接 <a href='http://baidu.com'>点击进入</a>",true);   //内容
    			
    			//添加一个附件
    			FileDataSource file1 = new FileDataSource(new File("E:\Edisk\java\spring_Cchop8.rar"));
    			helper.addAttachment(file1.getName(), file1);
    		} catch (MessagingException e) {
    			// TODO 异常执行块!
    			e.printStackTrace();
    		} 	
    		javaMailSender.send(message);
    
    	}
    
    	public JavaMailSender getJavaMailSender() {
    		return javaMailSender;
    	}
    
    	public void setJavaMailSender(JavaMailSender javaMailSender) {
    		this.javaMailSender = javaMailSender;
    	}
    
    }
    

    结束!!!

  • 相关阅读:
    Django---Blog系统开发之注册页面(验证码&ajax发送文件)
    Django---Blog系统开发之建库
    Eclipse下导入外部jar包的3种方式
    linux 下 .sh 文件语法
    热备,冷备,云备的区别
    plsql 中如何清除曾经登录过的用户名
    Mac 查看python安装路径
    mac terminal终端怎么退出python命令行
    PyCharm 2017 Mac 免注册版破解安装说明
    PL/SQL恢复默认窗口样式
  • 原文地址:https://www.cnblogs.com/a1111/p/7459675.html
Copyright © 2011-2022 走看看