当前位置: 首页 > 知识库问答 >
问题:

spring邮件模块会替代javax.Mail吗

颛孙正卿
2023-03-14

我有一个spring boot应用程序,我需要同时向gmail帐户和Zoho帐户发送警报邮件。我尝试使用javax.mail,在这里我使用Java类设置Gmail和Zoho帐户的属性并使用它。spring邮件是否是javax.mail的最佳替代品。我怀疑spring邮件模块是否可以使用,因为我们在application.yml中设置了SMTP服务器属性。

共有1个答案

万俟穆冉
2023-03-14

首先要做的是从Maven中央存储库导入依赖项。

<dependency>
    <groupId>it.ozimov</groupId>
    <artifactId>spring-boot-email-core</artifactId>
    <version>0.5.0</version>
</dependency>

然后,使用以下条目填充application.yml

spring.mail.host: smtp.gmail.com
spring.mail.port: 587
spring.mail.username: hari.seldon@gmail.com
spring.mail.password: Th3MuleWh0
spring.mail.properties.mail.smtp.auth: true
spring.mail.properties.mail.smtp.starttls.enable: true
spring.mail.properties.mail.smtp.starttls.required: true

现在,为了示例的缘故,假设您有一个发送非常简单的纯文本电子邮件的服务。它将是这样的:

    package com.test;

    import com.google.common.collect.Lists;
    import it.ozimov.springboot.mail.model.Email;
    import it.ozimov.springboot.mail.model.defaultimpl.DefaultEmail;
    import it.ozimov.springboot.mail.service.EmailService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;

    import javax.mail.internet.InternetAddress;
    import java.io.UnsupportedEncodingException;

    import static com.google.common.collect.Lists.newArrayList;

    @Service
    public class TestService {

        @Autowired
        private EmailService emailService;

        public void sendEmail() throws UnsupportedEncodingException {
            final Email email = DefaultEmail.builder()
                    .from(new InternetAddress("hari.seldon@the-foundation.gal",
                            "Hari Seldon"))
                    .to(newArrayList(
                            new InternetAddress("the-real-cleon@trantor.gov",
                            "Cleon I")))
                    .subject("You shall die! It's not me, it's Psychohistory")
                    .body("Hello Planet!")
                    .encoding("UTF-8").build();

            emailService.send(email);
        }

    }

让我们在主应用程序中这样做,在启动并初始化spring上下文之后,我们将发送电子邮件。

package com.test;

import it.ozimov.springboot.mail.configuration.EnableEmailTools;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.batch.JobExecutionExitCodeGenerator;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;

import javax.annotation.PostConstruct;
import java.io.UnsupportedEncodingException;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.TimeUnit;

@SpringBootApplication
@EnableEmailTools
public class PlainTextApplication {

    @Autowired
    private TestService testService;

    public static void main(String[] args) {
        SpringApplication.run(PlainTextApplication.class, args);
    }

    @PostConstruct
    public void sendEmail() throws UnsupportedEncodingException, InterruptedException {
        testService.sendEmail();
    }

}

请注意,要启用电子邮件工具,您需要使用注释对主应用程序进行注释

@EnableEmailTools

这将触发扩展的配置类。

 类似资料:
  • 我正在尝试使用从hotmail帐户发送邮件。 到目前为止,我还使用gmail帐户测试了我的代码,一切都很好,但使用hotmail没有任何特别的工作,我收到了。 这是我用来发送邮件的代码: 如您所见,我创建了一个PropertiesFactory,以便为我使用的每个特定邮件主机创建Properties对象的特定实例。在代码中有HotmailProperties结构的工厂。 开始调试会话时,我检查了u

  • 本文向大家介绍java发送javax.mail邮件实例讲解,包括了java发送javax.mail邮件实例讲解的使用技巧和注意事项,需要的朋友参考一下 平时我们网上逛网站的时候,经常会用到网站的注册。有很多方法,比如发短信验证,发邮箱验证。最近在SSH框架下,做了一个简单的邮件发送激活链接到邮箱,然后激活注册用户的一个功能。我用到的MailServer是易邮邮件服务器,引用的是javax.mail

  • 由于使用了容器模式来组织各模块的实例,意味着你可以比较容易的替换掉已经有的服务,以公众号服务为例: <...> $app = Factory::officialAccount($config); $app->rebind('request', new MyCustomRequest(...)); 这里的 request 为 SDK 内部服务名称。

  • 问题内容: 我想使用gmail作为smtp服务器发送电子邮件。 这是我的代码,我没有让它工作…运行testSettings()之后,我得到了调试输出,然后它停止了。没有超时,没有错误,什么都没有。 发生以下错误:http : //pastie.org/private/rkoknss6ppiufjd9swqta 问题答案: 代替 props.put(“ mail.transport.protocol

  • MainClass: 例外情况:

  • 我有一个Java程序,安装在一台旧的Ubuntu机器上,使用javax.mail发送邮件。然而,那台机器坏了,我现在正在一台新的CentOS机器上运行同样的Java应用程序。 但是,当尝试使用mail.smtp.host=127.0.0.1发送电子邮件时,我得到一个错误“MessagingException:501语法:HELO hostname”。 我猜邮件服务器尚未在此CentOS中激活。 如