标签: smtpclient

使用带有用户名密码身份验证的 smtp 服务器发送电子邮件 C#

我有一段发送电子邮件的代码..这是代码

这对我不起作用。这是一个远程 smtp 服务……我仔细检查了电子邮件网络访问是否正常……我可以使用 gui 登录、接收和发送电子邮件。

但是当我尝试通过代码来做时..它失败并显示消息......

{System.Net.Mail.SmtpException: SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.7.0 未给出 AUTH 命令。

任何人都可以建议......而且他们没有暴露EWS,即交换网络服务./..这是要走的路..

端口是 25 并且没有 SSL 或 TLS

Button b = sender as Button;
try
{
    MailMessage msg = new MailMessage(senderEmail, recieverEmail, "afdasfas", "safasfa");
    //MailMessage msg = new MailMessage(senderEmail, recieverEmail, subject, subject);
    System.Net.Mail.SmtpClient mailclient = new System.Net.Mail.SmtpClient(EmailSmtpServer, outgoingPort);
    System.Net.NetworkCredential auth = new System.Net.NetworkCredential(senderEmail, senderPassword);
    mailclient.Host = EmailSmtpServer;
    mailclient.UseDefaultCredentials = false;
    mailclient.Credentials = auth;
    mailclient.Send(msg);
    MessageBox.Show(b.Content + ":WORKED");
}
catch (Exception e4)
{
    MessageBox.Show(b.Content + ": " +e4.Message);
    MessageBox.Show(b.Content …
Run Code Online (Sandbox Code Playgroud)

c# smtp sendmail smtpclient

3
推荐指数
1
解决办法
1万
查看次数

在 Azure 中使用 SendGrid 从 @my-domain.com 发送电子邮件

我的网络应用程序在 azure 中运行。我想要的是能够从 xxx@mydomain.com 发送电子邮件。可以使用 SendGrid 吗?例如,如果我使用 gmail 的 smtp,电子邮件将从 NetworkCredentials 用户名中指定的电子邮件地址发送,即使在 MailMessage 中我使用不同的电子邮件地址。如果我改用 SendGrid,电子邮件是来自 azure 创建的用户名还是我能做到这一点?

azure smtpclient sendgrid

3
推荐指数
1
解决办法
6219
查看次数

SmtpFailedRecipientException 和 SmtpFailedRecipientsException

我正在努力区分这两个异常,特别是根据它们的属性和用法:

  • 它们都FailedRecipient为单个电子邮件地址定义了一个属性
  • 如果你抓住SmtpFailedRecipientException这个面具SmtpFailedRecipientsException

从逻辑上讲,我希望复数版本优先 - 服务器无法将您的电子邮件发送给任何收件人 - 超过服务器无法发送给单个特定收件人。

但是,如果您发送给 8 个收件人,其中两个失败怎么办 - 现在您会遇到什么异常?

就捕获, andSmtpClient.Send()而言,正确处理的调用应该是什么样子?SmtpFailedRecipientExceptionSmtpFailedRecipientsExceptionSmtpException

.net c# exception smtpclient

3
推荐指数
1
解决办法
1639
查看次数

使用 MailKit 将消息写入磁盘上的文件夹

我正在尝试将使用 System.Net.Mail 的应用程序移至 MailKit/MimeKit。

使用 System.NetMail,您可以将消息写入文件夹,如下所示:

_smtp = new SmtpClient()
{
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = path //path could be a string like "C:\Temp"
};

_smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)

是否有使用 MailKit/MimeKit 执行此操作的解决方案?

谢谢您的帮助!

c# smtp smtpclient mailkit mimekit

3
推荐指数
1
解决办法
1240
查看次数

使用附件时,Send-MailMessage 关闭每第二个连接

我正在尝试编写一个 powershell 脚本来向 30 人发送带有几个附件的电子邮件。电子邮件是个性化的,因此必须单独发送。该脚本在没有附件的情况下运行良好。但是,当使用附件时,Send-MailMessage 的每个其他实例都会失败,并显示:

Send-MailMessage : 无法将数据写入传输连接:远程主机强行关闭了现有连接。

在发送消息之间等待/暂停多长时间似乎并不重要。即使我等了几分钟,第一个实例总是会成功,下一个会失败,下一个会成功,等等。我什至注意到在运行脚本之间,我对偶数或奇数的 ctrl+c 决定了成功Send-MailMessage 的第一个实例。如果最后一条消息失败,则第一条消息成功,反之亦然。

我的代码非常简单,我们只有一个包含所有用户的数组,并且

$array | foreach {
  Write-Host "Sending Mail..."
  Send-MailMessage -From 'myemail@domain' -To $_.EmailAddress 
  -SmtpServer 'fqdn' 
  -Attachments "1.pdf", "2.pdf"
  -Subject 'Subject'
  -Body ($html)
  -BodyAsHtml
}
Run Code Online (Sandbox Code Playgroud)

因此,输出将类似于以下内容:

发送邮件...

发送邮件...

Send-MailMessage : 无法将数据写入传输连接:远程主机强行关闭了现有连接。

发送邮件...

发送邮件...

Send-MailMessage : 无法将数据写入传输连接:远程主机强行关闭了现有连接。

在没有错误的情况下,邮件会完好无损地到达。

我可以通过执行以下操作来“解决”这个问题:

try { Send-MailMessage ... -EA Stop }
catch { Send-MailMessage }
Run Code Online (Sandbox Code Playgroud)

结果,30/30 的人会收到邮件(而不是 15/30),因为每次尝试(除了 #1)都失败了,但是 catch 块中的代码总是能够成功。

当然,这不是一个真正的解决方案,我不想就这样离开它。有没有人对这里发生的事情有任何了解,以及如何解决它?

email powershell smtp smtpclient

3
推荐指数
1
解决办法
2872
查看次数

发送批量电子邮件时出错"异步调用已在进行中.必须先完成或取消,然后才能调用此方法"

我创建了一个控制台应用程序,用于将数据从一个数据库表迁移到另一个数据库表,其中迁移了客户的记录,因此我必须通知他们密码更改.

public static async Task<bool> SendRegisterEmail(List<MailMessage> mailMessage)
{
    bool flag = true;
    try
    {
        var smtp = new SmtpClient();
        var taskEmails = mailMessage.Select(x => smtp.SendMailAsync(x));

        await Task.WhenAll(taskEmails); // **Error : An asynchronous call is already in progress. It must be completed or canceled before you can call this method**
    }
    catch (Exception ex)
    {
        throw ex;
    }

    return flag;
}
Run Code Online (Sandbox Code Playgroud)

如果我删除了等待Task.WhenAll(taskEmails),但是当迁移操作完成时,它不会发送所有电子邮件.操作完成后关闭的控制台应用程序中有许多仍未发送,我有超过1,00,000条记录,那么如何在后台或应用程序运行中继续发送电子邮件,直到所有电子邮件成功发送?

以下是数据迁移的代码:

foreach (DataRow SourceReader in DS.Tables[0].Rows)
{
    insertCounter++;
    using (SqlCommand DestinationCommand = DestinationConnection.CreateCommand())
    {
        Console.WriteLine("inserting row...");
        var …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous console-application smtpclient

3
推荐指数
1
解决办法
1743
查看次数

GMAIL SMTP:对 SSPI 的调用失败异常 - 不支持请求的功能

我正在使用 gmail smtp 发送邮件: 主机:smtp.gmail.com 端口:587

在 MVC 应用程序中使用 gmail smtp 发送邮件时出现异常。以下代码用于发送邮件:

public static int SendMail(string StrFromAdd, string StrEmailTo, string StrSubject, string StrContents,
        string SMTPServer, int SMTPPort, string SMTPUserName, string SMTPPassword,
        string attachment = "", string CC = "", string BCC = "")
    {
        try
        {
            AlternateView AV = null;
            System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            System.Net.Mail.MailAddress fromAddress = new System.Net.Mail.MailAddress(StrFromAdd, "Test");
            smtpClient.Host = SMTPServer;
            smtpClient.Port = SMTPPort;
            smtpClient.Credentials = new System.Net.NetworkCredential(SMTPUserName, SMTPPassword);

            smtpClient.EnableSsl = true; …
Run Code Online (Sandbox Code Playgroud)

c# email gmail smtp smtpclient

3
推荐指数
1
解决办法
5349
查看次数

git send-email 发送邮件失败

我正在尝试发送 git 补丁以供上游社区审核;但接收方没有收到消息;

我尝试将“ --to”更改为我的私人电子邮件 ID 之一,但即使如此,我的私人邮箱也没有收到此信息;

命令:

git send-email --no-chain-reply-to --from "Ganapathi Bhat <xxx@gmail.com>" --to linux-wireless@vger.kernel.org my_patch.patch
Run Code Online (Sandbox Code Playgroud)

输出:

Unable to initialize SMTP properly. Check config and use --smtp-debug. VALUES: server=smtp.gmail.com encryption=tls hello=yyy.yyy.com port=587 at /usr/lib/git-core/git-send-email line 1506
Run Code Online (Sandbox Code Playgroud)

命令:

git config -l

输出:

user.email=xxx@gmail.com
user.name=Ganapathi Bhat
sendemail.smtpencryption=tls
sendemail.smtpserver=smtp.gmail.com
sendemail.smtpuser=xxx@gmail.com
sendemail.smtpserverport=587
Run Code Online (Sandbox Code Playgroud)

该补丁应交付给社区进行审核,并且应出现在以下列表中: https ://patchwork.kernel.org/project/linux-wireless/list/

git smtp sendmail smtpclient git-send-email

3
推荐指数
1
解决办法
3122
查看次数

在申请结束前不会发送电子邮件

我有一个使用SmtpClient发送电子邮件的应用程序,但在应用程序关闭之前不会发送电子邮件.我搜索并搜索以找到问题的解决方案,但我找不到.

系统确实安装了Symantec防病毒软件,这可能是问题所在.

有没有人能解决这个问题?

这是我正在使用的代码.

public class EMail
{
    private string server;
    public string Server {get{return this.server;}set{this.server = value;}}
    private string to;
    public string To {get{return this.to;}set{this.to = value;}}
    private string from;
    public string From {get{return this.from;}set{this.from = value;}}
    private string subject;
    public string Subject {get{return this.subject;}set{this.subject = value;}}
    private string body;
    public string Body {get{return this.body;}set{this.body = value;}}

    public EMail()
    {}
    public EMail(string _server, string _to, string _from, string _subject, string _body)
    {
        this.Server = _server;
        this.To = _to;
        this.From …
Run Code Online (Sandbox Code Playgroud)

c# email smtpclient

2
推荐指数
1
解决办法
2921
查看次数

由于发生"操作超时"错误,无法通过smtp服务器发送邮件

由于发生"操作超时"错误,无法通过smtp服务器发送邮件.我已经尝试了几乎所有在这个网站上给出的方法,尝试使用另一个端口号以及除了gmail之外的客户端,我想知道问题是什么.以下是附加的代码段.

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Security;
using System.Net.Mail;
using System.Net;

public partial class home : System.Web.UI.Page
{
    SmtpClient smtp = new SmtpClient();

    MailMessage newMail = new MailMessage();

    protected void Page_Load(object sender, EventArgs e)
    {   
        smtp.Host = "smtp.gmail.com";
        smtp.Port = 465;
        smtp.Credentials = new NetworkCredential("user@gmail.com", "password");
        smtp.UseDefaultCredentials = false;
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.EnableSsl = true;

        newMail.From = new MailAddress("user@gmail.com");
        newMail.Priority = MailPriority.High;
    }
    protected void Button_send_Click(object sender, EventArgs e)
    {
        try
        {
            newMail.To.Add(new MailAddress(TextBox_to.Text)); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net email smtpclient mailmessage

2
推荐指数
1
解决办法
1万
查看次数