问题标签 [smtps]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
183 浏览

delphi - 我可以在中继邮件时将我的服务器 SSL 证书附加到 TIdSMTPRelay 组件吗

我想知道在TIdSMTPRelay使用indy. 这就是我的代码中邮件中继部分的样子:

有时邮件永远不会发送,有时它会被发送但会进入垃圾邮件部分(雅虎),尽管STARTTLS由于附加TIdSSLIOHandlerSocketOpenSSL到我的TIdSMTPRelay. 我可以连接到另一个邮件服务器的SMTPS端口465还是TIdSMTPRelay组件只能发送到端口25?有关更多详细信息,这是与 yahoo 的通信方式:

0 投票
1 回答
321 浏览

amazon-ec2 - 使用 SES 在 AWS EC2 上运行时 Mule SMTP 连接器问题

我正在尝试使用在 AWS EC2 Lynx 机器上运行的 SMTPS 连接器在运行时 Mule 上向 AWS SES 发送电子邮件,但我不断收到“无法连接到邮件传输”Mule 异常。

我可以从 EC2 机器 Telnet 到 AWS SES 端点,但无法让 EHLO 工作,我可能在那里做错了什么。我可以使用相同的 SMTPS 连接器和相同的 AWS SES 凭证从我自己在 Anypoint 上运行我的应用程序的 PC 成功地将电子邮件发送到 AWS SES,因此我知道那里一切正常。

我在想 Anypoint 和 runtime Mule 之间一定有区别吗?

这是我的连接器代码,我是否需要添加信任库才能使其在运行时工作?

这是日志的相关部分

信息 org.mule.lifecycle.AbstractLifecycleManager - 初始化:'SMTPS.dispatc her.1395684883'。对象是:SmtpMessageDispatcher 2016-11-08 16:30:25,149 [[feecalculator].HTTP_Listener_Configuration.worker.01] INFO org.mule.api.security.tls.TlsPropertiesMapper - 默认 mule.email.smtp 的信任存储到客户端密钥存储 2016-11-08 16:30:25,361 [[feecalculator].HTTP_Listener_Configuration.worker.01] INFO org.mule.api.security.tls.TlsProperties - 加载配置文件:


消息:无法连接到邮件传输。

元素:/sendEmailFlow/processors/0/0/0 @ feecalculator:sendEmail l.xml:22(产品 SMTPS)

异常堆栈是:无法连接到邮件传输。(org.mule.api.endpoint.EndpointException)

我的本地机器上的区别是 'tls-default.conf not found' :

信息 2016-11-08 16:19:16,533 [[feecalculator].HTTP_Listener_Configuration.worker.08] org.mule.lifecycle.AbstractLifecycleManager:初始化:'SMTPS.dispatcher.1555978287'。对象是:SmtpMessageDispatcher INFO 2016-11-08 16:19:16,539 [[feecalculator].HTTP_Listener_Configuration.worker.08] org.mule.api.security.tls.TlsPropertiesMapper:默认 mule.email.smtps 信任库到客户端密钥库WARN 2016-11-08 16:19:16,574 [[feecalculator].HTTP_Listener_Configuration.worker.08] org.mule.api.security.tls.TlsProperties:未找到文件 tls-default.conf,使用默认配置。信息 2016-11-08 16:19:20,100 [[feecalculator].HTTP_Listener_Configuration.worker.08] org.mule.lifecycle.AbstractLifecycleManager:开始:'SMTPS.dispatcher.1555978287'。对象是:SmtpMessageDispatcher

0 投票
0 回答
43 浏览

c# - System.web.mail 只接受一个附件

我正在尝试通过 SMTPS 与我的应用程序一起发送电子邮件,System.Net 不支持,但 System.Web.Mail 支持。如果我发送带有一个附件的邮件,它可以正常工作,但如果附件不止一个,我会收到 Invalid Attachment 的错误(当我调用新的 MailAttachment(文件名)时,而不是当我将其添加到邮件中时)。这是我的代码

0 投票
2 回答
1110 浏览

mule - 如何将 smtps 消息发送到独立的 greenmail 服务器

我有一个 mule 流,需要将 smtps 消息发送到 greenmail 服务器。

mule 流使用带有配置密钥库和信任库的 smtps 连接器:

<smtps:connector name="SMTPS_Connector" validateConnections="true" doc:name="SMTP"> <smtps:tls-client path="${keystore.path}" storePassword="${keystore.password}"/> <smtps:tls-trust-store path="${truststore.path}" storePassword="${truststore.password}"/> </smtps:connector>

我的 greenmail 服务器是使用默认值启动的。

当我调用我的流程来发送电子邮件时,我会收到以下日志:

在骡子日志中:

错误 2017-03-17 19:33:38,106 [Default_HTTP_Connector.receiver.06] org.mule.exception.DefaultMessagingExceptionStrategy: ************************ ****************************************************** ****** 消息:无法连接到邮件传输。代码
:MULE_ERROR--2 -------------------------------------------------------- ------------------------------------------------ 异常堆栈为: 1. 未找到受信任的证书(sun.security .validator.ValidatorException)
sun.security.validator.SimpleValidator:396 (null) 2. sun.security.validator.ValidatorException: 未找到可信证书 (javax.net.ssl.SSLHandshakeException)
sun.security.ssl.Alerts:192 ( http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/net/ssl/SSLHandshakeException.html) 3. 无法连接到 SMTP 主机:localhost,端口:3465 (javax.mail.MessagingException) com.sun.mail.smtp.SMTPTransport:1706 ( http://java.sun.com/j2ee/sdk_1.3/ techdocs/api/javax/mail/MessagingException.html ) 4. 无法连接到邮件传输。(org.mule.api.endpoint.EndpointException)
org.mule.transport.email.SmtpMessageDispatcher:67 ( http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/endpoint/EndpointException .html) ------------------------------------------------- ------------------------------- 根异常堆栈跟踪:sun.security.validator.ValidatorException:在 sun 处未找到受信任的证书.security.validator.SimpleValidator.buildTrustedChain(SimpleValidator.java:396) 在 sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:134) 在 sun.security.validator.Validator.validate(Validator.java:260) +另外 3 个(设置调试级别日志记录或“-Dmule.verbose.exceptions=true”为所有内容)


在 Greenmail 服务器日志中:

错误 2017-03-17 19:33:38,086 [smtps:localhost:3465<-/127.0.0.1:27671] com.icegreen.greenmail.smtp.SmtpHandler: 意外错误处理连接,退出 = javax.net.ssl.SSLException :连接已关闭:javax.net.ssl.SSLHandshakeException:在 sun.security.ssl.AppInputStream.read(AppInputStream.java :92) 在 sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283) 在 sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325) 在 sun.nio.cs.StreamDecoder.read(StreamDecoder. java:177) 在 java.io.InputStreamReader.read(InputStreamReader.java:184) 在 java.io.BufferedReader.fill(BufferedReader.java:154) 在 java.io.BufferedReader.readLine(BufferedReader.java:317) 在java.io。com.icegreen.greenmail.smtp.SmtpConnection.receiveLine(SmtpConnection.java:57) 上 com.icegreen.greenmail.smtp.SmtpHandler.handleCommand(SmtpHandler.java:82) 上的 BufferedReader.readLine(BufferedReader.java:382) .icegreen.greenmail.smtp.SmtpHandler.run(SmtpHandler.java:56) at com.icegreen.greenmail.server.AbstractServer$1.run(AbstractServer.java:163) at java.lang.Thread.run(Thread.java: 745)原因:javax.net.ssl.SSLHandshakeException:在 sun.security.ssl.Alerts.getSSLException(Alerts.java: 154) 在 sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1991) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1098) 在 sun.security.ssl.SSLSocketImpl。performInitialHandshake(SSLSocketImpl.java:1344) 在 sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:721) 在 sun.security.ssl.AppOutputStream.write(AppOutputStream.java:122) 在 sun.nio.cs.StreamEncoder .writeBytes(StreamEncoder.java:221) 在 sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) 在 sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295) 在 sun.nio.cs。 StreamEncoder.flush(StreamEncoder.java:141) at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) at java.io.PrintWriter.flush(PrintWriter.java:320) at com.icegreen.greenmail.util.InternetPrintWriter .println(InternetPrintWriter.java:91) 在 com.icegreen.greenmail.util.InternetPrintWriter.println(InternetPrintWriter.java:196) 在 com.icegreen.greenmail.smtp.SmtpConnection.send(SmtpConnection.java:48) at com.icegreen.greenmail.smtp.SmtpHandler.sendGreetings(SmtpHandler.java:76) at com.icegreen.greenmail.smtp.SmtpHandler.run(SmtpHandler.java:53) ... 2 更多

似乎我需要在我的 Greenmail 服务器上指定一个密钥库,但我找不到这样做的方法。

我尝试在类路径中放置一个密码为“changeit”的greenmail.jks,但它在启动时给了我这个错误:

错误 2017-03-17 17:42:24,185 [smtps:localhost:3465] com.icegreen.greenmail.util.DummySSLServerSocketFactory:无法创建和初始化 SSL java.security.UnrecoverableKeyException:无法在 sun.security.provider 恢复密钥。在 sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:55) 在 sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:138) 在 java.security 的 KeyProtector.recover(KeyProtector.java:328) .KeyStore.getKey(KeyStore.java:804) 在 sun.security.ssl.SunX509KeyManagerImpl.(SunX509KeyManagerImpl.java:131) 在 sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:68) 在 javax.net .ssl.KeyManagerFactory.init(KeyManagerFactory.java:259) 在 com.icegreen.greenmail.util.DummySSLServerSocketFactory.(DummySSLServerSocketFactory.java:56) 在 com.icegreen.greenmail.util.DummySSLServerSocketFactory.getDefault(DummySSLServerSocketFactory.java:87) 在 com.icegreen.greenmail.server.AbstractServer.openServerSocket(AbstractServer.java:63) 在 com.icegreen.greenmail.server.AbstractServer com.icegreen.greenmail.server.AbstractServer.run(AbstractServer.java:86) 处的 .initServerSocket(AbstractServer.java:115) 线程“smtps:localhost:3465”java.lang.IllegalStateException 中的异常:无法创建和初始化 SSL在 com.icegreen.greenmail.util.DummySSLServerSocketFactory.(DummySSLServerSocketFactory.java:65) 在 com.icegreen.greenmail.util.DummySSLServerSocketFactory.getDefault(DummySSLServerSocketFactory.java:87) 在 com.icegreen.greenmail.server.AbstractServer.openServerSocket( AbstractServer.java:63) 在 com.icegreen.greenmail。server.AbstractServer.initServerSocket(AbstractServer.java:115) at com.icegreen.greenmail.server.AbstractServer.run(AbstractServer.java:86) 原因:java.security.UnrecoverableKeyException:无法在 sun.security.provider 恢复密钥。在 sun.security.provider.JavaKeyStore$JKS.engineGetKey(JavaKeyStore.java:55) 在 sun.security.provider.JavaKeyStore.engineGetKey(JavaKeyStore.java:138) 在 java.security 的 KeyProtector.recover(KeyProtector.java:328) .KeyStore.getKey(KeyStore.java:804) 在 sun.security.ssl.SunX509KeyManagerImpl.(SunX509KeyManagerImpl.java:131) 在 sun.security.ssl.KeyManagerFactoryImpl$SunX509.engineInit(KeyManagerFactoryImpl.java:68) 在 javax.net .ssl.KeyManagerFactory.init(KeyManagerFactory.java:259) 在 com.icegreen.greenmail.util.DummySSLServerSocketFactory.(DummySSLServerSocketFactory.爪哇:56)

0 投票
1 回答
98 浏览

c - cURL terminal command executes successfully while libcurl program doesn't

The above libcurl code was generated by command line with the following command:

While the command

succesfully sends the mail, why myCode.c fails sending the mail? Output of the verbose option stops responding after

and the mail.txt file is:

0 投票
1 回答
1495 浏览

python - 通过python发送电子邮件时出现SMTPServerDisconnected错误

尝试使用主机发送电子邮件时:cpanel.freehosting.com P 它会引发错误,例如

这是我的代码:

这是我得到的错误:

0 投票
1 回答
354 浏览

sockets - 来自电子邮件地址的邮件提交代理(MSA)服务器主机名通过 C++

我正在寻找一种通用方法来获取邮件提交服务器的主机名,方法是只使用 c/c++ 的电子邮件地址,这样我就可以连接到端口 587 和/或 465 smtp 提交。

例如 example@gmail.com -> smtp.gmail.com 或 gmail-smtp-msa.l.google.com

基本上,我代表客户发送一些特定的电子邮件。所以最后看起来他们已经发送了电子邮件。到目前为止,我仍在使用一个简单的域来主机名映射,例如 {gmail.com,smtp.gmail.com},我会在需要时对其进行扩展。但是,我非常想避免使用此地图并自动执行此过程。

前段时间我发布了c++ sockets - smtp server hostname from email address,这应该是同一个问题,也许还不够清楚。在答案中,我被建议执行 DNS 查找并询问 MX 记录。一本书和一个实现后来我注意到这些mx记录不适合邮件提交(无法连接到端口587,只有25)。我检查了 resolv.h 中定义的所有其他类型并检查了 nslookup (它可能正在使用 resolv.h ),现在我真的认为这通过 DNS 查找是不可行的。如果有人想尝试它,请检查nslookup -type=mx gmail.com您不会看到任何 -msa... 的东西。

我现在有点绝望,因为我真的很想完成它。但是,我也不想在上面花费数周时间。我也会很高兴得到一个答案,告诉我它在合理的时间内是不可行的。


编辑:

按照一个最小的示例,我刚刚通过 DNS MX 方法非常快速地尝试连接到端口 25、465、587。

给出作为输出

请注意这些主机名中的“in” 。我对smtp.gmail.com的 cname 进行了 dns 查询,它给了我gmail-smtp-msa.l.google.com所以“msa”,它对端口 587/465 开放。我真的认为这些 mx 记录现在只适用于端口 25,而不适用于邮件提交。


编辑#2:

互联网上的 25、465、587 端口存在很多混淆。只是为了为我澄清这些端口在 ssl/tls 中没有区别。例如,当您想从 example@yourDomain.com 向 example@gmail.com 发送电子邮件时,端口 25。例如,当您想从 example1@gmail.com 向 example2@gmail.com 发送电子邮件时,端口 587。最后,端口 465[deprecated] 与 587 相同,只是它已经以 ssl/tls 开头。如果我错了,请纠正我,但我很确定我不是!从我的真实应用程序中运行 3 EHLO 的日志。首先使用 mx 记录主机名和端口 25,第二个使用“smtp.gmail.com”和端口 587,最后一个使用“smtp.gmail.com”和端口 465。请注意 587/465 之后具有 AUTH 命令选项的区别安全连接和 25 没有 AUTH 选项。因此,当通过端口 25 发送电子邮件时,收件人会收到通知,发件人未经过验证,您通常很快就会被阻止(垃圾邮件)。无论如何,我需要这个 AUTH 命令,应用程序是完全合法的,没有垃圾邮件等。这就是为什么我需要打开 587 端口的 smtp 服务器,我认为这些 MX 服务器不是正确的。

端口 25

端口 587

端口 465

0 投票
0 回答
258 浏览

r - 如何使用 R 中的 curl 包通过 SMTPS 发送邮件?

我想在 R 中使用 SMTPS 发送邮件。目前,没有可用的包支持通过 TLS ( rmail& sendmaileR) 发送邮件,或者它们很难安装 Java 依赖项 ( mailr)。我尝试使用 curl 并设法使用以下代码段发送邮件:

不幸的是,我无法使用辉煌curl包将那个片段翻译成 R。虽然我设法找到了所有选项,但 curl 语句每次都会使 R 会话崩溃。此外,我无法将mail.txt文件添加到我在临时目录中创建的请求中。有人使用 curl 包管理发送邮件吗?为什么程序总是崩溃?目标应该是在所有平台上发送邮件。

0 投票
1 回答
1061 浏览

perl - 无法使用 Perl 中的 Net::SMTP 模块在端口 465 上提交电子邮件

我想在客户端的 perl 脚本中使用 Net::SMTP 模块(不使用 Net::SMTP::SSL)在我的 smtp 服务器的端口 465 上提交电子邮件。在我的 SMTP 服务器的 465 端口上,“提交”服务运行,它理解 SMTPS。

我试图在谷歌上找到这样做的方法。然后使用 Net::SMTP::SSL 模块在端口 465 上发出请求。它工作正常。

但是Net::SMTP::SSL的文档建议使用最新版本的 Net::SMTP 而不是 Net::SMTP::SSL。该文件明确指出

自 Net::SMTP v1.28 (2014-10-08) 起,Net::SMTP 本身就支持基于 SSL 的 SMTP,也支持 STARTTLS。使用 Net::SMTP,而不是 Net::SMTP::SSL。

我已将 Net::SMTP 模块更新到最新版本 3.11。

Net::SMTP的文档也明确指出

安装 IO::Socket::SSL 后,它还支持隐式和显式 TLS 加密,即 SMTPS 或 SMTP+STARTTLS。

我在客户端的 perl 脚本代码部分,与提到的问题相关,如下所示:

...设置发送者、接收者主体等的剩余脚本

这工作正常。电子邮件被提交。将上面的代码替换为:

...设置发送者、接收者主体等的剩余脚本

这失败了。调试日志如下所示:

注意:Net::SMTP、Net::SMTP::SSL、IO::Socket::SSL 等模块均已更新至最新版本。

预期的结果是可以使用最新的 Net::SMTP 模块在 SMTP 服务器上侦听端口 465 上的“提交”服务请求,而不使用 Net::SMTP::SSL(因为文档声称)

0 投票
1 回答
353 浏览

perl - Sendmail 使用 localhost.localdomain

带有 Perl 的 Sendmail 使用localhost.localdomain而不是完全限定的域名 (FQDN)。Sendmail 和服务器配置正确,主机名设置为 FQDN。

我的脚本包含以下几行:

邮件已成功发送,但sendmail使用.localhost.localdomain而不是 FQDN EHLO。调试信息显示:

sendmail直接从控制台使用(不使用 Perl)时,正确的 FQDN 与EHLO.