maven项目(错误二) spring发送邮件报“com.sun.mail.smtp.SMTPAddressFailedException: 553 5.7.1”的解决方案

近期启动一个maven项目后,需要做一个发送邮件的功能;采用的是spring框架自带的发送邮件方法,用main方法调试,都是OK的,但是使用tomcat启动项目后,再次发送,总是失败,报错信息 如下:

 

Failed messages: javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
	com.sun.mail.smtp.SMTPAddressFailedException: 553 5.7.1 <xxx@xxxx.com>: Sender address rejected: not logged in

 

百思不得其解,最后发现是spring的jar包少了,在pom.xml里添加: 

 

spring 版本:

 

<spring.version>3.2.2.RELEASE</spring.version>

 

 

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-tx</artifactId>
   <version>${spring.version}</version>
</dependency>

完整的spring的jar包引用如下:

 

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
    <dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>

 

 

 

 

 

发送源码如下:

spring.xml 添加:

 

<import resource="classpath:spring/config/test-email.xml" />


test-eamil.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:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/tx
    	 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/aop 
  		 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
	default-autowire="byName">
	
	<!-- 邮件发送服务配置 -->
	<bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
		<property name="host" value="xxx" />
		<property name="username" value="xxx@xxx.com" />
		<property name="password" value="xxx" />
		<property name="javaMailProperties">
		      <props><prop key="mail.smtp.auth">true</prop></props>
                </property>
		<property name="defaultEncoding" value="utf-8" />
	</bean>
	
	<!-- 发件人 -->
	<bean id="email_from" class="java.lang.String">
		<constructor-arg value="xxx@xxx.com" />
	</bean>
	
	<!-- 主题 -->
	<bean id="email_subject" class="java.lang.String">
		<constructor-arg value="欢迎使用xxx" />
	</bean>
</beans>

 

 

controll调用方法:

 

 @Autowired
 private EmailService emailService;

 

 

 

 

    /**
     *  新增初始化
     * @param request 
     * @param response 
     * @return ModelAndView
     * @throws Exception 
     * 
     */
    @RequestMapping(params = "action=sendEmail")
    public void sendEmail(HttpServletRequest request, HttpServletResponse response) throws Exception {
    	//获取参数
    	String email  = CommUtil.getFilterParameter(request,"email");
    	String content  = CommUtil.getFilterParameter(request,"content");
    	if(StringUtils.isNotBlank(email) && StringUtils.isNotBlank(content)) {
			boolean falg = emailService.sendEmail(email, content);
			if(falg){
				System.out.println("邮箱验证码发送成功!");
			}else{
				System.out.println("邮箱验证码发送失败!");
			}
		}
    }

 


service类:

 

 

 

public interface EmailService {
	
	/**
	 * 发送邮件
	 * 
	 * @param email 邮件地址
	 * @param content 邮件内容
	 * 
	 * @exception SysException
	 * */
	public boolean sendEmail(String email, String content);

}

 

service实现类:

 

@Service("emailService")
public class EmailServiceImpl implements EmailService{

	@Autowired
	private JavaMailSender javaMailSender;

	@Autowired
	private String email_from;
	
	@Autowired
	private String email_subject;

	@Override
	public boolean sendEmail(String email, String content){
		if(StringUtils.isBlank(email)){
			System.out.println("接收邮件地址为空");
			return false;
		}
		
		try {
			this.send(email,content);
		} catch (Exception e) {
			System.out.println("Email发送异常"+e.getMessage());
			return false;
		}
		
		return true;
	}
	
	/**
	 * 发送邮件
	 * @param email
	 * @param content
	 * @throws Exception
	 */
	private void send(String email, String content) throws Exception{
		System.out.println("[发送邮件](" + email_from + ")(" + email + ")("+ email_subject + ")");
		MimeMessage message = javaMailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(message);
		try {
			helper.setSubject(email_subject);
			helper.setFrom(email_from);
			helper.setTo(email);
			helper.setText(content, true);
			javaMailSender.send(message);
		} catch (Exception e) {
			throw new Exception(mailExceptionHandler(e.getMessage()));
		}
	}
	

	/**
	 * 明确错误异常
	 * */
	private String mailExceptionHandler(String errorMessage){
		
		if(StringUtils.isEmpty(errorMessage)){
			return errorMessage;
		}
		if(errorMessage.contains("Invalid Addresses")){
			return "邮箱地址无效,邮件服务器未找到该邮件地址,请核实!";
		}
		return errorMessage;
	}

}


测试url:

 

 

http://运用名称/xxx.do?action=sendEmail&email=xxx@qq.com&content=发送邮件测试

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值