PDA

View Full Version : ارسال ایمیل به وسیله SMTP و ذخیره ان در قسمت Sent



NasimBamdad
یک شنبه 06 آبان 1397, 12:00 عصر
سلام وقت بخیر .

بنده نیاز دارم که از C# و از سمت نرم افزار خودم از طریق میل سرور که یک VPS تهیه کردم و cPanel و ... ایمیل ارسال کنم

از طریق SMTP و ابزار های MimeKit و MailKit ایمیل رو ارسال می کنم و هیچ مشکلی نداره .

اما مشکل اینه که ایمیلی که ارسال می کنم باید یه نسخه ازش در Sent بمانه ، اما اینطور نیست .


برای این مشکل چه راه حلی پیشنهاد میشه ؟


var message = new MimeMessage();
message.From.Add(new MailboxAddress("Mohsen", "mohsen@domain.com"));
message.To.Add(new MailboxAddress("deweloper77@gmail.clom"));
message.Subject = "Test SubJect";
var builder = new BodyBuilder();
builder.HtmlBody = "BODy TEXT";
message.Body = builder.ToMessageBody();
using (var client = new SmtpClient())
{
client.Connect("mail.domain.com", 587, false);
client.Authenticate("mohsen@domain.com", "PassWord");
client.Send(message);
client.Disconnect(true);
}

رامین مرادی
یک شنبه 06 آبان 1397, 12:40 عصر
من خودم از این روش استفاده میکنم خیلی خوب ارسال میکنه و تو Sent هم میمونه



try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(txtSmtpServer.Text);
mail.From = new MailAddress("test@gmail.com", "تست");
mail.To.Add(txtTo.Text);
mail.Subject = txtSubject.Text;
mail.IsBodyHtml = true;
mail.Body = htmlEditor1.Html;
try
{
if (this.File != "")
{
Attachment at = new Attachment(this.File);
mail.Attachments.Add(at);
}
}
catch(Exception ex)
{
;
}
SmtpServer.Port = int.Parse(txtPortServer.Text);
SmtpServer.Credentials = new System.Net.NetworkCredential(txtUserServer.Text, txtPasswordServer.Text);
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);

MessageBox.Show("ایمیل با موفقیت ارسال شد.");
}
catch (Exception ex)
{

MessageBox.Show("خطایی در ارسال به وجود آمد: "+ex.Message);
}

NasimBamdad
یک شنبه 06 آبان 1397, 12:41 عصر
من خودم از این روش استفاده میکنم خیلی خوب ارسال میکنه و تو Sent هم میمونه



try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(txtSmtpServer.Text);
mail.From = new MailAddress("test@gmail.com", "تست");
mail.To.Add(txtTo.Text);
mail.Subject = txtSubject.Text;
mail.IsBodyHtml = true;
mail.Body = htmlEditor1.Html;
try
{
if (this.File != "")
{
Attachment at = new Attachment(this.File);
mail.Attachments.Add(at);
}
}
catch(Exception ex)
{
;
}
SmtpServer.Port = int.Parse(txtPortServer.Text);
SmtpServer.Credentials = new System.Net.NetworkCredential(txtUserServer.Text, txtPasswordServer.Text);
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);

MessageBox.Show("ایمیل با موفقیت ارسال شد.");
}
catch (Exception ex)
{

MessageBox.Show("خطایی در ارسال به وجود آمد: "+ex.Message);
}



به غیر از Gmail جایی دیگه امتحان کردید ؟ gmail خودش این کار انجام میده و اما بقیه سرویس ها اینطوری نیست

رامین مرادی
یک شنبه 06 آبان 1397, 12:50 عصر
متسفانه رو چند تا دامنه خودمون تست کردیم مثل گوگل خوب نبود. برا همین مجبورا رو گوگل داریم استفاده میکنیم. خیلی هم عالی جواب میده

NasimBamdad
یک شنبه 06 آبان 1397, 12:51 عصر
کد شما این اررور رو برای من میده :


System.Net.Mail.SmtpException: 'Failure sending mail.'
IOException: The handshake failed due to an unexpected packet format.

رامین مرادی
یک شنبه 06 آبان 1397, 13:04 عصر
پورت رو چند تنظیم میکنید؟من رو 587 تنظیم کردم
از گوگل اجازه دسترسی برنامه هارو میدید؟ این مورد رو چک کنید حتما

NasimBamdad
یک شنبه 06 آبان 1397, 14:24 عصر
پورت رو چند تنظیم میکنید؟من رو 587 تنظیم کردم
از گوگل اجازه دسترسی برنامه هارو میدید؟ این مورد رو چک کنید حتما

هم از 587 و هم 465 . ،
از جیمیل استفاده نمی کنم . از سرور خودم استفاده می کنم و این پورت ها باز هستند .

جالب اینه که با کامپوننت وقتی ارسال می کنم ( MimeKit و MailKit ) به راحتی ارسال می کنه ، ولی وقتی خودم کد می زنم این اررور ها رو میده

NasimBamdad
چهارشنبه 12 دی 1397, 17:49 عصر
از دوستان کسی اگه اینو بتونه انجام بده ، هزینه اش هم تقدیم میشه

https://stackoverflow.com/questions/53918033/how-to-save-a-copy-of-sent-emails-into-sent-folder-in-cpanel-and-dovecot

اینچا هم تاپیک زدم ولی هیچ !

Mahmoud.Afrad
پنج شنبه 13 دی 1397, 09:59 صبح
بعد از ارسال موفق ایمیل، از طریق ImapClient پیام را به فولدر مورد نظر اضافه کنید.
using (ImapClient imapClient = new ImapClient())
{
imapClient.Connect("imap.server.addreess", 993, true);
imapClient.Authenticate("username", "password");
IMailFolder sentFolder = imapClient.GetFolder(MailKit.SpecialFolder.Sent);
sentFolder.Append(message);
}

NasimBamdad
پنج شنبه 13 دی 1397, 14:46 عصر
ممنونم ، لطف بسیاری کردید ،

مشکلم حل شد