`

利用Gmail发送邮件的问题

    博客分类:
  • java
阅读更多
在采用Java Mail发送邮件的时候,配置文件如下:
<!-- A test configuration -->
      <configuration>
        <!-- Change to your mail server prototocol -->
        <property name="mail.store.protocol" value="pop3"/>
        <property name="mail.transport.protocol" value="smtp"/>
		<property name="mail.smtp.auth" value="true"/>
		
        <!-- Change to the user who will receive mail  -->
        <property name="mail.user" value="xxxxxxxx@gmail.com"/>
		

        <!-- Change to the mail server  -->
        <property name="mail.pop3.host" value="pop.gmail.com"/>
		  <!-- The mail server port -->
        <property name="mail.pop3.port" value="995"/>

        <!-- Change to the SMTP gateway server -->
        <property name="mail.smtp.host" value="smtp.gmail.com"/>
        
        <!-- The mail server port -->
        <property name="mail.smtp.port" value="587"/>
        
        <!-- Change to the address mail will be from  -->
        <property name="mail.from" value="xxxxxxx@gmail.com"/>

        <!-- Enable debugging output from the javamail classes -->
        <property name="mail.debug" value="true"/>
      </configuration>

但莫名其妙的会出现下面的问题:
org.springframework.mail.MailSendException; nested exception details (1) are:
Failed message 1:
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 22sm877296yxe.3

	at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
	at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
	at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
	at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:403)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:342)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:357)
	at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:346)
	at com.cp.web.service.mail.MailServiceImpl.sendNotification(MailServiceImpl.java:51)
	at com.cp.web.actions.AccountAction.resetPassword(AccountAction.java:306)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
	at com.opensymphony.xwork2.interceptor.I18nInt

后来在晚上发现用gmail发信的时候,必须要设置下面的属性:
    <property name="mail.smtp.starttls.enable" value="true"/>

但不知道为什么,不知道谁给解答一下。
0
0
分享到:
评论

相关推荐

    c#gmail发送邮件资料

    在C#编程环境中,利用.NET Framework的System.Net.Mail命名空间中的MailMessage和SmtpClient类,我们可以轻松地实现通过Gmail服务发送电子邮件的功能。本文将详细介绍这个过程,并提供相关的代码示例。 首先,确保...

    利用 spring mail 通过 gmail(SSL) 发邮件

    本教程将详细讲解如何利用Spring Mail通过Gmail的SSL(安全套接层)协议来发送邮件。 首先,我们需要在项目中引入Spring Mail的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;...

    如何快速管理Gmail里的语音邮件

    这种利用Gmail搜索命令和过滤器的方法,与之前用于隐藏垃圾邮件计数器的技巧类似,都是利用Gmail内置的高级功能来优化用户体验。 使用标签系统有诸多优点。除了可以直观地查看和管理语音邮件,标签还能与其他过滤...

    VS2015C++利用SMTP发送邮件的例子(支持附件发送)Gmail,163,qq,yahoo等邮箱

    在本文中,我们将深入探讨如何使用Visual Studio 2015 C++ Win32应用程序通过SMTP(Simple Mail Transfer Protocol)发送邮件,特别是针对Gmail、163、QQ和Yahoo等主流邮件服务提供商。这个例子提供了完整的源代码,...

    gmail-sender-helper,这个库帮助你向gmail发送电子邮件.zip

    总之,`gmail-sender-helper` 是一个方便的工具,它使得通过Gmail发送邮件变得更加简单,同时也为开发者提供了一个学习和理解SMTP协议、OAuth2认证以及Python库集成的好机会。正确理解和使用这个库,可以极大地提升...

    Python操作Gmail@定时定向群发邮件

    通过这个库,我们可以连接到Gmail服务器并发送邮件。而email库则提供了构建邮件消息体的工具,包括创建邮件头信息和正文。 在`sentGmail.py`这个文件中,我们首先需要配置Gmail的SMTP服务器地址('smtp.gmail.com'...

    tp5和tp5.1发送邮件拓展包

    在实际使用过程中,可能遇到邮件发送失败的问题,如SMTP连接问题、权限问题等。这时,可以利用PHPMailer的错误处理机制,输出错误信息进行调试。 10. **安全与合规**: 发送邮件时,需要注意隐私保护和反垃圾邮件...

    邮件Gmail(asp.net开发)

    在ASP.NET开发中,利用Gmail进行邮件发送是一项常见的任务,尤其对于构建Web应用程序时,如用户注册验证、系统通知等。本知识点将详细介绍如何在ASP.NET环境中集成Gmail服务来实现邮件功能,并且会涉及使用存储过程...

    利用 Gmail 寄信

    总结,利用Gmail发送邮件不仅可以满足日常的个人通信需求,还可以通过编程实现自动化邮件功能,极大地提高了工作效率。无论是简单的脚本还是复杂的系统集成,Gmail的API和库都提供了足够的灵活性和强大的功能,让...

    利用Bean发邮件.rar_bean mail_发邮件

    "利用Bean发邮件"是指通过Java的JavaMail API结合Spring框架中的Bean管理来实现邮件发送功能。这个压缩包文件可能包含了相关教程或者示例代码,如"www.pudn.com.txt"可能是从某个论坛或资源网站下载的资料链接,而...

    C# Winform 发送邮件

    总之,C# Winform发送邮件的核心是利用System.Net.Mail命名空间的类,结合SMTP服务器信息和登录凭证,构建并发送MailMessage对象。通过理解这些基本概念和步骤,你可以轻松地在Winform应用中实现邮件发送功能。

    批量发送邮件(excel表格里面的邮箱地址)

    本教程将详细讲解如何利用按键精灵(AutoHotkey)脚本编写一个批量发送邮件的软件,并结合Excel表格来管理收件人邮箱地址。 首先,我们需要了解SMTP(Simple Mail Transfer Protocol)服务。SMTP是互联网上传输电子...

    Laravel开发-laravel-gmail

    6. **邮件标签和分类**:利用Gmail的标签功能,你可以对邮件进行分类和管理,方便用户查找和组织邮件。 7. **事件监听**:可以监听Gmail的事件,比如当有新邮件到达时触发某些操作,实现自动化工作流。 8. **异步...

    php发邮件类smtp发邮件发送文本发送附件和图片全部代码

    在`send_mail`文件中,你可能会看到类似这样的结构,通过参数传递邮件的相关信息,然后调用上述代码来完成邮件的发送。这个`send_mail`文件可以作为一个实用工具,帮助你在项目中轻松地处理邮件发送的需求。

    java发送邮件实例

    Java程序可以利用SMTP服务发送邮件,但需要通过一个API来实现,JavaMail就是这样的工具。 JavaMail API是Java中用于处理邮件的接口库,它提供了创建、发送和接收邮件的功能。要使用JavaMail发送邮件,你需要以下...

    java 发送邮件 小工具类+ mail.jar

    - 发送邮件过程中可能出现各种问题,如网络故障、认证失败等。需要适当地捕获并处理`MessagingException`。 - JavaMail还提供了丰富的日志功能,通过设置`mail.debug`属性为`true`,可以在控制台看到详细的发送...

    28_单片机发送电子邮件(SMTP).rar

    本压缩包文件“28_单片机发送电子邮件(SMTP).rar”显然是一个关于如何利用单片机通过SMTP(Simple Mail Transfer Protocol)协议发送电子邮件的教学资源。下面我们将深入探讨这一主题,讲解相关知识点。 首先,...

    利用JavaMail发送邮件示例

    JavaMail 是一个开源库,它允许Java开发者使用标准的SMTP(简单邮件传输协议)或ESMTP(扩展SMTP)协议发送邮件,同时也能通过IMAP(Internet消息访问协议)和POP3(邮局协议)接收邮件。这个示例将详细介绍如何在...

    uipath邮件读取和发送

    本教程将详细介绍如何利用UiPath Studio进行邮件的收发操作,以及相关的配置和注意事项。 首先,理解UiPath中的邮件活动。UiPath Studio提供了多种与电子邮件交互的活动,如`Send Email`(发送邮件)、`Read Email`...

    定时发送邮件软件

    总的来说,利用易语言开发定时发送邮件软件是一项实用的技术,它可以帮助用户自动化日常的邮件通信,提高效率。但同时,也需要注意合规性和道德责任,确保软件的用途正当,不会对网络环境造成不良影响。

Global site tag (gtag.js) - Google Analytics