如何使用Gmail SMTP发送邮件Spring实现?

3

如何使用Gmail SMTP发送邮件Spring实现?

在执行主方法后,出现异常 Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/FileTypeMap

public static void main(String[] args) {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
        sender.setHost("smtp.gmail.com");
        sender.setPort(25);
        sender.setPassword("xxxxxxx");
        sender.setUsername("businesscaliber@gmail.com");

        MimeMessage message = sender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message);
            helper.setTo("yashwantchavan@gmail.com");
            helper.setText("Thank you for ordering!");
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sender.send(message);
    }

把activation.jar放在类路径中后,出现了这个异常。
javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first. 21sm3277189pzk.7
4个回答

7
在Saurabh的简化版本中,您可以简单地执行以下操作:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl" p:host="smtp.gmail.com"
    p:port="587" p:username="donotreply@host.com" p:password="aSmartPassWord">
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtp.auth">true</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
            <prop key="mail.smtp.timeout">8500</prop>
        </props>
    </property>
</bean>

1
据我所知,GMail仅支持加密SMTP,并且错误消息以相当迂回的方式告诉您这一点。 您需要配置Spring使用它而不是纯文本SMTP。
请参见{{link1:此先前问题的答案}},其中解释了如何配置JavaMailSenderImpl来执行此操作(尽管我自己没有测试过)。

1
你需要添加以下行:

Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
sender.setJavaMailProperties(props);

Properties类是java.util.Properties。

第一次使用时,您可能会收到错误信息“...请通过网络浏览器登录,然后重试...”,因此您需要前往您的谷歌电子邮件信箱并阅读新的邮件。其中将包含关闭安全设置的链接。


0

执行该方法后出现以下异常主线程中的异常: java.lang.NoClassDefFoundError: javax/activation/FileTypeMap 位于 com.businesscaliber.utility.Mailer.main(Mailer.java:13) - Vicky
似乎类路径中缺少一个JAR文件... activation.jar在那里吗? - user262976
添加激活jar后出现另一个异常:javax.mail.MessagingException: 530 5.7.0 必须先发出STARTTLS命令。21sm3277189pzk.7 - Vicky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接