问题标签 [smtpclient]

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 投票
4 回答
25436 浏览

c# - 通过 http 代理发送邮件

我正在尝试从通过 Internet 选项中设置的 http 代理连接到 Internet 的系统发送电子邮件。

我正在使用 SmtpClient。

有没有办法通过这个代理设置使用 SmtpClient 发送邮件。谢谢

0 投票
7 回答
13677 浏览

.net - .NET 发送电子邮件的最佳方法(System.Net.Mail 有问题)

这似乎很简单。我需要从一些 ASP.NET 应用程序发送电子邮件。我需要始终如一地做到这一点,而不会出现奇怪的错误,也不会出现 CPU 利用率过高的情况。我不是在谈论群发电子邮件,只是偶尔发送电子邮件。

System.Net.Mail似乎被严重破坏了。SmtpClient 不发出 Quit 命令(可能是因为 Microsoft(R) 对以下规范不感兴趣),因此连接保持打开状态。因此,如果有人在该连接最终关闭之前尝试发送电子邮件,您可能会从 SMTP 服务器收到关于打开的连接过多的错误。这是 Microsoft(R) 对修复完全不感兴趣的错误。看这里:

http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=146711

另外,如果您环顾四周,建议使用此代码来解决此问题:

好的,是的,这确实“解决”了连接保持打开状态的问题。但是,如果您愿意,这始终如一地在服务器上尝试,这会导致运行进程(在本例中为 w3wp.exe)的 CPU 跳跃并保持在 100%,直到您的应用程序池被回收。无论出于何种原因,运行 mscorwks.dll!CreateApplicationContext 的线程都是罪魁祸首。

这有一个非常好的副作用,如果您在一个对持续 100% 的 CPU 使用不满意的 Web 主机上运行,​​您将禁用您的应用程序池。因此,这并不像某些人建议的那样微不足道。

所以我的问题是怎么办?我需要做的就是这么简单;然而,让那些“打开的连接太多”错误是不可接受的,100% 的 CPU 使用率也是不可接受的。我不想购买第三方组件,不是因为我便宜,而是我购买了足够多的组件和 MSDN 订阅,以至于不得不为简单的 SMTP 功能支付 100 到 300 美元似乎很疯狂。

我读到将 MaxIdleTime 设置得更高会有所帮助,但我对此表示怀疑。我不想因为微软不想遵循 SMTP 规范而冒险禁用我的应用程序池。

编辑: 我查看了 quiksoft.com 组件,但它不支持 SMTP 身份验证,而且价格为 500 美元。一定有办法解决这个问题。

0 投票
4 回答
2874 浏览

c# - 未使用 SmtpClient 将电子邮件发送到某些电子邮件地址

我为客户端创建了一个简单的 asp.net 电子邮件表单,它使用 SmtpClient 类发送电子邮件。这是非常基本的并且在大多数情况下都有效。

该表格用于许多网站,但只能间歇性地工作。该代码始终有效并且不会引发任何异常,它只是正常工作但间歇性地工作,对于某些客户,电子邮件永远不会到达收件人地址。如果更改外部电子邮件(例如我的个人 Hotmail 帐户),它可以正常工作。

我们已要求收件人检查他们的垃圾邮件收件箱,但无济于事。如何能够跟踪此问题?我怎么知道我的客户 asp.net 服务器是否已发送电子邮件(在这种情况下,问题在收件人端)?

0 投票
1 回答
3415 浏览

.net - 使用 SmtpClient 发送邮件的最佳方式?

在发送大量电子邮件时,我正在寻找良好的性能。

我听说正确的做法是打开一个连接发送约 20 封电子邮件并关闭连接。一遍又一遍地这样做。它是否正确?

SmtpClient 是如何工作的,它是否会在它自己的生命周期内打开一个连接?(不是 IDisposable,所以看起来不像)或者它是否为每封发送的电子邮件打开一个连接?或者它是否一直打开连接?或者它是否有一些魔法可以在适当的时候打开和关闭连接?

我想知道,所以我知道我应该如何启动 SmtpClient。作为单身人士或仅用于大量消息...

0 投票
1 回答
1400 浏览

asp.net - Independentsoft 生成 .msg 邮件在转发时丢失附件

老实说,我遇到了一个问题,我最初认为这不是编程问题,但在检查了所有其他领域后,如果这可能是一个问题,我将不胜感激。

我们有一个 ASP.NET Web 应用程序,可以向用户发送带有附件的电子邮件。发送后,消息将在 SharePoint 中保存为 .msg 文件。所有这些都正确且可靠地工作。

我们发现的问题是,当用户打开 .msg 文件(即从 SharePoint 下载)然后转发它时,附件会从电子邮件中脱落。附件在 .msg 文件中,可以打开和查看 - 问题仅在他们转发时出现(文档在他们按下时消失)。

用户正在使用 Outlook(各种版本)和 Internet Explorer。

我尝试了以下方法来消除非编程解释:

  1. 转发实际发送的电子邮件 - 这有效(即保留附件)
  2. 从 msg 文件中获取内容和附件,发送然后转发 - 这有效
  3. 收下这封电子邮件,上传到 SharePoint,下载并转发 - 这行得通
  4. 获取生成的 .msg 文件并保存在本地。打开并转发 - 这不起作用
  5. 从 SharePoint 打开生成的 .msg 文件 - 这不起作用
  6. 更改所有适当的信任/内联网设置 - 没有区别
  7. 转发生成的 .msg - 收到文件时仍然丢失

使用标准 SmtpClient 功能发送电子邮件,我不认为*这应该是我需要解决的区域。我们正在使用名为 Independentsoft 的第三方组件来生成我们的 .msg 文件,我认为这很可能是我们需要帮助的领域。

摘录相当简单:

任何可能导致这种情况的想法将不胜感激

0 投票
3 回答
4575 浏览

c# - 如何为电子邮件 (System.Net.Mail.SmtpClient) 附件设置一个好听的名称

我正在使用 C# 中的 System.Net.Mail.SmtpClient 发送附件。
附件名称与我传递给附件构造函数的文件名称相同

我将如何为附件设置一个“好”的名称?我目前拥有的名称基本上是数字 ID,表示附加了哪个报告。我的用户正在寻找更友好的东西,比如“results.xls”。

0 投票
2 回答
6786 浏览

email - 正确处理 SmtpClient 使用的资源

我有一个使用用户凭据连续运行的C# 服务(即不是作为本地系统 - 尽管我想更改它,但我无法更改)。在大多数情况下,该服务似乎运行正常,但它经常无缘无故地崩溃并重新启动(服务管理器设置为在崩溃时重新启动服务)。

我正在做大量的事件记录,并且我有一种分层异常处理方法,我相信这至少有某种意义:

  • 本质上,我得到了顶级通用异常、空异常和启动异常处理程序。
  • 然后我得到了“命令级别”的各种处理程序(即服务运行的特定操作)
  • 最后我处理了一些在类级别处理的异常

我一直在查看是否有任何资源没有正确释放,并且我开始怀疑我的邮件代码(发送电子邮件)。我注意到我没有为MailMessage 对象调用 Dispose ,我现在重写了 SendMail 代码,如下所示。

基本问题是:

  • 此代码会正确释放用于发送邮件的所有资源吗?
  • 我没有看到处理SmtpClient 对象的方法?
  • (记录在案:我没有使用对象初始化器来使示例更易于阅读)
0 投票
6 回答
62362 浏览

c# - C# 使用 SmtpClient 发送带有内联图像的邮件

SmtpClient() 允许您在邮件中添加附件,但是如果您想在邮件打开时显示图像而不是附加它怎么办?

我记得,它可以用大约 4 行代码来完成,但我不记得是怎么做的,而且我在 MSDN 网站上找不到它。

编辑:我没有使用网站或任何东西,甚至没有 IP 地址。图像位于硬盘驱动器上。发送时,它们应该是邮件的一部分。所以,我想我可能想使用一个标签......但我不太确定,因为我的电脑没有广播。

0 投票
6 回答
4012 浏览

c# - 发送邮件可以在服务器上工作,但不能在我的本地机器上工作

我在下面有以下代码(我一直在 xxx 中不公布真实姓名)。当我上传到服务器时,这段代码可以正常工作,并且会完美地发送电子邮件。

但是当我在 Visual Studio 的机器上进行本地测试时,出现错误:

[SocketException (0x274d):无法建立连接,因为目标机器主动拒绝它66.226.21.251:25] System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +239 System.Net.Sockets.Socket。 InternalConnect(端点 remoteEP)+35 System.Net.ServicePoint.ConnectSocketInternal(布尔连接失败,套接字 s4,套接字 s6,套接字和套接字,IPAddress 和地址,ConnectSocketState 状态,IAsyncResult asyncResult,Int32 超时,异常和异常)+224

[WebException:无法连接到远程服务器] System.Net.ServicePoint.GetConnection(PooledStream PooledStream, Object owner, Boolean async, IPAddress& address, Socket& abortSocket, Socket& abortSocket6, Int32 timeout) +5420699 System.Net.PooledStream.Activate( Object owningObject, Boolean async, Int32 timeout, GeneralAsyncDelegate asyncCallback) +202 System.Net.PooledStream.Activate(Object owningObject, GeneralAsyncDelegate asyncCallback) +21 System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +332 System .Net.Mail.SmtpConnection.GetConnection(字符串主机,Int32 端口)+160 System.Net.Mail.SmtpTransport.GetConnection(字符串主机,Int32 端口)+159

关于为什么这不起作用的任何建议

0 投票
3 回答
2435 浏览

smtpclient - System.Net.Mail.SmtpClient.Send 是同步的吗?

考虑到 SmtpClient 有一个我没有使用的 SendAsync 方法,因此假设 StmpClient.Send 是同步的是否安全?我正在使用它发送带有临时文件附件的电子邮件,并想知道我是否可以在之后立即删除临时附件。

谢谢,罗伯。