gpt4 book ai didi

java - 使用 spring mail 将邮件发送到 gmail 帐户的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:45:17 29 4
gpt4 key购买 nike

我在使用 spring mail 向 gmail 帐户发送邮件时遇到了问题。我引用了 stackoverflow 中的大部分帖子并尝试了这些帖子。但没有运气。仍然坚持下去。请建议我的代码中还缺少什么。

Windows -8: Java 7

EmailServiceImpl.java:

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import com.test.mail.data.EmailData;

public class EmailServiceImpl {
private JavaMailSender mailSender;

public JavaMailSender getMailSender() {
return mailSender;
}

public void setMailSender(JavaMailSender mailSender) {
this.mailSender = mailSender;
}
public void sendMail(EmailData emailData) {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message);
try {
helper.setFrom(emailData.getFrom());
helper.setTo(emailData.getTo());
helper.setSubject(emailData.getSubject());
helper.setText(emailData.getBody());
} catch (MessagingException e) {
e.printStackTrace();
}
mailSender.send(message);
}
}

应用程序上下文.xml

            <bean id="emailSvcImpl"
class="com.test.mail.services.impl.EmailServiceImpl">
<property name="mailSender" ref="mailSender" />
</bean>


<!-- via TLS -->

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<!-- <property name="port" value="25" /> --> <!-- Also checked with port number : 25 -->
<property name="port" value="587" />
<property name="protocol" value="smtp" />
<property name="username" value="fromaccount@gmail.com" />
<property name="password" value="fromaccountpwd" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.debug">true</prop>
<prop key="mail.smtp.timeout">8500</prop>
</props>
</property>
</bean>


<!-- Also Tried to send gmail via SSL -->
<!--
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.gmail.com" />
<property name="port" value="465" />
<property name="protocol" value="smtps" />
<property name="username" value="fromaccount@gmail.com" />
<property name="password" value="fromaccountpwd" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtps.auth">true</prop>
<prop key="mail.smtps.starttls.enable">true</prop>
<prop key="mail.smtps.debug">true</prop>
<prop key="mail.smtps.timeout">8500</prop>
</props>
</property>
</bean> -->

Maven 依赖项:

            <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.11.RELEASE</version>
</dependency>

<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.2</version>
</dependency>

cmd提示:用'ping smtp.gmail.com'命令ping ,能得到回复,没有数据丢失。

异常:

   org.apache.cxf.interceptor.Fault: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host,   port: smtp.gmail.com, 465; timeout -1;
nested exception is:
java.net.ConnectException: Connection refused: connect. Failed messages: com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 465; timeout -1;
nested exception is:
java.net.ConnectException: Connection refused: connect

尝试使用 SSL 和 TLS 发送邮件,但端口号不同但​​同样异常

最佳答案

Google 已更改政策,您需要允许应用程序访问您的帐户。

我昨天遇到了一个问题,并通过 google.com 收到了这封电子邮件

您可以切换到 Gmail 等 Google 开发的应用程序来访问您的帐户(推荐)或在 https://www.google.com/settings/security/lesssecureapps 更改您的设置这样您的帐户就不再受现代安全标准的保护。

完成所有操作后,您可以验证属性,这就是我使用的并且它在我这边工作得很好

 Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com"); //SMTP Host
props.put("mail.smtp.socketFactory.port", "465"); //SSL Port
props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory"); //SSL Factory Class
props.put("mail.smtp.auth", "true"); //Enabling SMTP Authentication
props.put("mail.smtp.port", "465"); //SMTP Port

希望您使用的是正确的值。

关于java - 使用 spring mail 将邮件发送到 gmail 帐户的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28273799/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com