我正在尝试编写代码,什么会保存图片框的内容(有效)并通过电子邮件发送(不起作用)。
您认为可能是什么问题?是否还有更多的SmtpClient客户端=新的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);
}
谢谢!
答案 0 :(得分:1)
如果你不希望你的应用程序挂起,这可能需要一些时间(如果图像很大,或者服务器没有响应,你需要把它放到一个单独的线程中。(很多例子已经存在)
正如我们中的一些人也指出的那样,您还需要发送电子邮件,上面的代码不会这样做。请注意,如果gmail认为你试图通过它们进行转发,邮件可能不会发送。
答案 1 :(得分:1)
有:
“SMTP服务器需要安全连接或客户端未经过身份验证。服务器响应为:5.5.1需要身份验证”
尝试使用:
var client = new SmtpClient("smtp.gmail.com", 587)
{
Credentials = new NetworkCredential("username", "password"),
EnableSsl =true
};
client.Send(message);