如何从C#发送带有附件的电子邮件

本文关键字:电子邮件 | 更新日期: 2023-09-27 17:58:22

我正在尝试编写一段代码,它可以保存图片框的内容(有效),并通过电子邮件发送(无效)。

你认为问题出在哪里?SmtpClient client=new SmtpClient("smtp.gmail.com");是否还有其他内容?

此外,该程序不应该在上传图像时冻结,而是在必要时能够同时上传一些图像。

            System.Drawing.Image img = pictureBox1.Image;
            string name = "" + DateTime.Now.ToString("dd_MM_yyyy_HH_mm_ss") + ".jpg";
            img.Save(name, System.Drawing.Imaging.ImageFormat.Jpeg);
            if (chb_notif.Checked == true) ////////////// SEND EMAIL!
            {
                MailMessage message = new MailMessage(
                   "do-not-reply@123.com",
                   tb_email.Text ,
                   "VIDEO FENCE",
                   "Your perimeter has been breeched! System name: " + Environment.MachineName + "." );
                Attachment data = new Attachment(name);
                ContentDisposition disposition = data.ContentDisposition;
                disposition.CreationDate = System.IO.File.GetCreationTime(name);
                disposition.ModificationDate = System.IO.File.GetLastWriteTime(name);
                disposition.ReadDate = System.IO.File.GetLastAccessTime(name);
                message.Attachments.Add(data);
                //Send the message.
                SmtpClient client = new SmtpClient("smtp.gmail.com");
                client.Credentials = CredentialCache.DefaultNetworkCredentials;
                client.Send(message);
            }

谢谢!

如何从C#发送带有附件的电子邮件

用于:

"SMTP服务器需要安全连接,或者客户端未通过身份验证。服务器响应为:5.5.1需要身份验证"

试用:

 var client = new SmtpClient("smtp.gmail.com", 587)
        {
            Credentials = new NetworkCredential("username", "password"),
            EnableSsl =true
        };
        client.Send(message);

如果你不想让你的应用程序挂起,这可能需要一些时间(如果图像很大,或者服务器没有响应,你需要把它放在一个单独的线程中

正如我们中的一些人也指出的那样,你也需要发送电子邮件,你上面的代码不能做到这一点。当然要注意,如果gmail认为你试图通过他们转发,邮件可能不会发送。