用 Spring 发送邮件的注意事项

用 Spring 发送邮件的注意事项

使用Spring 的封装的MailSender,确实省事多了!
但在使用中,还是得注意些问题

1.增加验证,否则会报:553 authentication is required 的错误信息
Java代码
Properties prop = new Properties();    
prop.setProperty("mail.smtp.auth", "true");    
JavaMailSenderImpl.setJavaMailProperties(prop);  



注意:此处 prop.setProperty("mail.smtp.auth", "true"); 中 true 必须用双引号引用起来,不然会报错,具体原因参考 Properties 文档.

2.当邮件内容是HTML语言时的中文问题:
初始化MimeMessageHelper辅助类时,设置"GBK" encoding!
如:
Java代码
MimeMessageHelper messageHelp = new MimeMessageHelper(message,true,"GBK");   

 


同时在设置:<META http-equiv=Content-Type content='text/html; charset=GBK'>
如果都设置为"UTF-8",在某些邮件客户端标题是冷僻字时,不能正常显示!

3.邮件附件的中文问题!
spring的文档里面说MimeMessageHelper设置了encoding,同时对title,text,attach产生作用,但还是会出问题:
解决方法:
Java代码
MimeUtility.encodeWord(file.getName());  



以下是一段完整的邮件发送测试代码,暂无附件设置
Java代码
/**  
 * MailTest.java  
 * Created on 2008-1-23 下午04:56:38  
 * Description: Test for mail sending  
 */  
package cn.edu.ccnu.inc.test;   
  
import java.util.Properties;   
  
import org.springframework.mail.MailSender;   
import org.springframework.mail.SimpleMailMessage;   
import org.springframework.mail.javamail.JavaMailSenderImpl;   
  
import junit.framework.TestCase;   
  
/**  
 * @author <a href="mailto:[email protected]">Iven</a>  
 */  
public class MailTest extends TestCase {   
       
    private static MailSender sender = null;   
    private static SimpleMailMessage message = null;   
  
    public void setUp() {   
        sender = new JavaMailSenderImpl();   
        ((JavaMailSenderImpl)sender).setHost("smtp.163.com");   
        ((JavaMailSenderImpl)sender).setUsername("username");   
        ((JavaMailSenderImpl)sender).setPassword("password");   
        Properties config = new Properties();   
        config.put("mail.smtp.auth", "true");   
        ((JavaMailSenderImpl)sender).setJavaMailProperties(config);   
        message = new SimpleMailMessage();   
    }   
       
    public void testSend() {   
        message.setTo("[email protected]");   
        message.setSubject("Test my owen sending program");   
        message.setFrom("[email protected]");   
        message.setText("Test......");   
           
        this.assertNotNull(sender);   
           
        sender.send(message);   
    }   
}  
/**

4.最后
注意:在用户名和密码都没有问题的情况下,如果代码抛出javax.mail.AuthenticationFailedException异常,先用OutLook测试一下看能否进行正常的收发邮件,有时信箱如果是新注册的话,邮件的服务商默认刚注册的帐号是不能使用pop3的。例如163.com在我进行代码测试时,刚刚注册的帐号是没有权限使用该功能的,所以就会抛出上述的异常。

你可能感兴趣的:(java,spring,html,JUnit,Yahoo)