如何使用java发送电子邮件

时间:2014-02-05 15:29:11

标签: java spring email

我有以下要求。

我已经验证了超过40个给定的应用程序路径,并将电子邮件发送到发布组,每60分钟发布一次路径并发布详细信息。

我在考虑在我的应用程序中使用哪个电子邮件框架。

我目前在我的maven项目中使用spring和jdk1.6来验证路径。

如果有任何异常访问发送给组的电子邮件的路径或文件夹,我可能需要附加错误日志(异常详细信息)。

请告知相应的电子邮件机制。链接到Web上的存在代码或示例代码非常有用。

我的团队说他们正在使用log4j框架发送电子邮件。但我在想为什么不使用Spring。我不知道如何选择最佳机制来支持我的要求。

2 个答案:

答案 0 :(得分:1)

很好,许多人使用javaMail在java中发送电子邮件

https://java.net/projects/javamail/pages/Home

当然,这只是客户方。

如果你还需要一个邮件服务器(可能用于测试目的),我认为apache james(https://james.apache.org/)并不难以安装和使用

这里有一些如何做的例子

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/

答案 1 :(得分:0)

您可以使用Spring Mail发送电子邮件,这非常简单明了。

  1. 将这些依赖项添加到您的POM:

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>...</version>
    </dependency>
    
    <dependency>
       <groupId>com.sun.mail</groupId>
       <artifactId>mailapi</artifactId>
       <version>1.5.0</version>
    </dependency>
    
    <dependency>
       <groupId>com.sun.mail</groupId>
       <artifactId>smtp</artifactId>
       <version>1.5.0</version>
    </dependency>
    
  2. 配置Spring Mail bean:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
    
        <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
              p:defaultEncoding="utf-8"
              p:host="smtp.example.org"
              p:port="25" />
    
        <!-- This is a template message that we can pre-load with default state. -->
        <bean id="templateMessage" class="org.springframework.mail.SimpleMailMessage"
              p:from="no-reply@example.org"
              p:subject="Testing message FTW!" />
    </beans>
    

    或者如果你更喜欢基于Java的配置(用Groovy编写):

    @Configuration
    class MailConfig {
    
        @Bean mailSender() {
            new JavaMailSenderImpl (
                defaultEncoding: 'utf-8',
                host: 'smtp.example.org',
                port: 25
            )
        }
    
         @Bean templateMessage() {
             new SimpleMailMessage (
                 from:    'no-reply@example.org',
                 subject: 'Testing message FTW!'
             )
         }
    }
    
  3. 最后发送一些电子邮件!

    @Slf4j
    public class EmailSenderExample {
    
       private MailSender mailSender;
       private SimpleMailMessage templateMessage;
    
       public void sendMail() {
           log.info("Sending email...");
    
           // Create a thread-safe "copy" of the template message and customize it.
           SimpleMailMessage msg = new SimpleMailMessage(templateMessage);
           msg.setTo("flynn@encom.com");
           msg.setText("Greetings, programs!");
    
           try {
                mailSender.send(msg);
           } catch (MailException ex) {
                log.warn("Email sending failed", ex);
           }
       }
    }