zoukankan      html  css  js  c++  java
  • Struts2+Spring发送邮件

    Spring本身有mail支持,所以用spring发邮件其实是个挺简单的事,看看其jar包

    <dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-mail</artifactId>
    <version>4.2.6.RELEASE</version>
    </dependency>

    1:pom.xml

    需要下载strut2 spring的核心包 mail.jar 以及activation.jar

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.zhao</groupId>
        <artifactId>Struts2_Spring</artifactId>
        <packaging>war</packaging>
        <version>0.0.1-SNAPSHOT</version>
        <name>Struts2_Spring Maven Webapp</name>
        <url>http://maven.apache.org</url>
        <dependencies>
            <dependency>
                <groupId>javax.mail</groupId>
                <artifactId>mail</artifactId>
                <version>1.4.7</version>
            </dependency>
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-json-plugin</artifactId>
                <version>2.3.24</version>
            </dependency>
    
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <!-- 只在编译时和测试时运行 -->
                <scope>provided</scope>
            </dependency>
            <!-- Struts2 -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>2.3.24</version>
    
            </dependency>
            <!-- convention-plugin插件,使用了这个插件之后,就可以采用注解的方式配置Action -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-convention-plugin</artifactId>
                <version>2.3.24</version>
            </dependency>
            <!-- struts2和spring整合 -->
            <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>2.3.24</version>
            </dependency>
            <!-- Spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.integration</groupId>
                <artifactId>spring-integration-mail</artifactId>
                <version>4.2.6.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.0.4.RELEASE</version>
            </dependency>
    
        </dependencies>
        <build>
            <finalName>Struts2_Spring</finalName>
        </build>
    </project>

    2:spring_bean.xml

    第一个bean是spring的支持,第二个bean是我自定义的Struts2 Action,然后依赖注入

        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
            <property name="host" value="smtp.163.com" />
            <property name="username" value="username"/>
            <property name="password" value="password" />
        </bean>
        
        <bean id="sendMail" class="com.zhao.action.SendMailAction" scope="singleton">
            <property name="mailSender" ref="mailSender"></property>
        </bean>

    3:struts.xml

    页面流程也很简单,成功了就进入成功界面

    <struts>
        <package name="default" extends="struts-default">
            <action name="send" class="com.zhao.action.SendMailAction">
                <result>success.jsp</result>
            </action>
            <action name="sendHtml" class="com.zhao.action.SendMailAction"
                method="sendHtml">
                <result>success.jsp</result>
            </action>
        </package>
    </struts>

    4:SendMailAction

    我们通过依赖注入,得到了JavaMailSenderImpl的对象,然后通过这个对象进行邮件的发送。

    package com.zhao.action;
    
    import javax.mail.internet.MimeMessage;
    
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSenderImpl;
    import org.springframework.mail.javamail.MimeMessageHelper;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /**
     * 
     * @author: zhao
     * @time: 2016年5月14日
     * 
     * @description:Struts2 + Spring 发送邮件
     */
    public class SendMailAction extends ActionSupport{
        private static final long serialVersionUID = 1L;
        private JavaMailSenderImpl     mailSender;
      
    //简单邮件发送 @Override
    public String execute() throws Exception { SimpleMailMessage message=new SimpleMailMessage(); message.setTo("to@163.com"); message.setFrom("from@163.com"); message.setSubject("练习"); message.setText("这只是一个简单的练习"); mailSender.send(message); return SUCCESS; }
    //html邮件发送
    public String sendHtml() throws Exception{ MimeMessage message=mailSender.createMimeMessage(); MimeMessageHelper messageHelper=new MimeMessageHelper(message); messageHelper.setTo("to@163.com"); messageHelper.setFrom("from@163.com"); messageHelper.setSubject("Html练习"); messageHelper.setText("<html><head></head><body><h1>SUCCESS</h1></body></html>",true); mailSender.send(message); return SUCCESS; } public JavaMailSenderImpl getMailSender() { return mailSender; } public void setMailSender(JavaMailSenderImpl mailSender) { this.mailSender = mailSender; } }

    5:错误解决

    正常来说上面的步骤就足够了,但是是我遇到了两个错误

    550 User has no permission
     535 Error: authentication failed

    550是说邮箱没有启用ssl/tls认证,所以我们直接发邮件肯定是失败的。

    进入网易邮箱,开始相应服务

      

      

    在这个过程会让你自己输入一个授权码,跟密码差不多,只不过你采用ssl方式登录时,需要输入授权码 ,而不是你的账号密码。这个授权码就是负责你在第三方登录的。

    接下来我又遇到了535错误,这个错误的意思是验证不通过,密码不对。需要修改sprng_bean.xml中的账号密码,改成授权码,然后就好了。

    好了,问题完美解决。

  • 相关阅读:
    POJ 3114 Tarjan+Dijkstra
    278. First Bad Version
    209. Minimum Size Subarray Sum
    154. Find Minimum in Rotated Sorted Array II
    153. Find Minimum in Rotated Sorted Array
    710. Random Pick with Blacklist
    767. Reorganize String
    524. Longest Word in Dictionary through Deleting
    349. Intersection of Two Arrays
    350. Intersection of Two Arrays II
  • 原文地址:https://www.cnblogs.com/zhao307/p/5494723.html
Copyright © 2011-2022 走看看