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中的账号密码,改成授权码,然后就好了。

    好了,问题完美解决。

  • 相关阅读:
    lambda函数
    linux 自学系列:wc命令
    linux 自学系列:chmod 权限操作
    linux 自学系列:创建、删除目录、移动、更名文件或目录
    linux 自学系列:vi、vim编辑工具
    《架构之美》学习随笔:设计第一步
    安装memcache 时提示error while loading shared libraries: libevent2.0解决办法
    《架构之美》学习随笔:保证质量
    linux 自学系列:环境变量设置
    logging模块学习笔记:logger 对象、日志等级
  • 原文地址:https://www.cnblogs.com/zhao307/p/5494723.html
Copyright © 2011-2022 走看看