【问题标题】:My method "SendMailByAttach" doesn't work as expected我的方法“SendMailByAttach”没有按预期工作
【发布时间】:2018-12-26 20:55:35
【问题描述】:

我有一个SendMail 操作方法和一个SendMailByAttach 方法,但我不知道为什么我的SenMailByAttach 方法不起作用并且要捕获,我设置了启用 ssl 并且...但它不起作用!

我的SendMail 操作方法工作正常,但我认为我的问题出在SendMailByAttach 方法中,我在 html 中正确输入:

public static bool SendMailByAttach(string subject, string body, string attachment, params string[] toMails)
{
    try
    {
        var mailMsg = new MailMessage();
        mailMsg.BodyEncoding = Encoding.UTF8;
        mailMsg.HeadersEncoding = Encoding.UTF8;
        mailMsg.SubjectEncoding = Encoding.UTF8;
        mailMsg.Priority = MailPriority.High;
        mailMsg.Subject = subject;
        mailMsg.Body = body;
        mailMsg.IsBodyHtml = true;
        mailMsg.From = new MailAddress("maxspeed201@gmail.com", "مهران ", Encoding.UTF8);
        mailMsg.Sender = new MailAddress("maxspeed201@gmail.com", "مهران ", Encoding.UTF8);
        mailMsg.Attachments.Add(new Attachment(attachment));
        foreach (var mail in toMails)
        {
            mailMsg.To.Add(new MailAddress(mail));
        }
        var smtp = new SmtpClient("smtp.gmail.com", 587);
        smtp.UseDefaultCredentials = false;
        smtp.EnableSsl = true;
        smtp.Timeout = 1000;
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
        smtp.Credentials = new NetworkCredential("MyEmail", "MyPasswordEmail");
        smtp.Send(mailMsg);
        return true;
    }
    catch
    {
        return false;
    }
}

这是我的操作方法:

public ActionResult SendMail(string recivers, string title, string text, HttpPostedFileBase attachment)
{
    bool result = false;
    if (attachment != null)
    {
        string path = Server.MapPath("~") + "\\Files\\Attachment\\" + Path.GetFileName(attachment.FileName);
        attachment.SaveAs(path);                
        //az ultility sendemailbyAttachment etefade kardim
        result = MailSender.SendMailByAttach(title, text, path, recivers.Split(','));
    }
    else
    {
        result = MailSender.SendMail(title, text, recivers.Split(','));
    }
    if (result)
    { //Success in sending
        return MessageBox.Show("پیام با موفقیت ارسال شد", MessageType.Success);
    }
    else
    {
        return MessageBox.Show("پیام ارسال نشد", MessageType.Error);
    }
}

我的SendMailByAttach 方法会被捕获

【问题讨论】:

  • 调试 101:在 catch 块中 - 检查 exception 对象,看看它告诉你什么!
  • 你这样做了吗? stackoverflow.com/a/32475872/2946329
  • 你可以——例如——实际检查抛出了什么异常。这可以提示您出了什么问题...
  • 我跟踪我的代码,一切都还好,我的输入,如我的接收者,标题和文本,并发送到我的方法,但我不知道为什么会出现异常 那是错误异常(SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 身份验证需要。了解更多信息)!!!!

标签: c# asp.net-mvc


【解决方案1】:

您可能正在尝试在本地主机中使用 gmail 发送电子邮件,如果是这种情况,请登录您发送电子邮件的 google 帐户并转到 this 链接并允许安全性较低的应用程序。

如果您在远程服务器上遇到问题,那么您必须禁用“验证码”并需要通过访问上述链接来允许不太安全的应用程序。要禁用“验证码”,请转到 this 链接。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多