PDA

View Full Version : حرفه ای: خطا در زمان حذف فایل اتچ شده پس از ارسال ایمیل



Sal_64
دوشنبه 03 تیر 1392, 22:55 عصر
سلام
من فایلی اتچ میکنم و پس از ارسال ایمیل میخوام اون فایل از روی هارد پاک کنم
که خطای زیر میده

he process cannot access the file 'C:\p930.xls' because it is being used by another processسعی کردم دسترسی ایمیل به فایل از بین ببرم با کد های زیر

mail.Attachments.Clear();
mail.Attachments.Dispose();
mail.Dispose();
ofd_mail_attach.Dispose();


اما خطا کماکان باقیست

دوستان میتونن راهنمایی کنن
تشکر

mehdy.programmer
سه شنبه 04 تیر 1392, 00:48 صبح
دوست عزیز شما برنامه تون رو release کنید. وقتی مستقیما از فایل اجرایی تون (بدون ویژوال استودیو) استفاده می کنید مشکلتون حل میشه!!

Sal_64
سه شنبه 04 تیر 1392, 07:37 صبح
دوست عزیز شما برنامه تون رو release کنید. وقتی مستقیما از فایل اجرایی تون (بدون ویژوال استودیو) استفاده می کنید مشکلتون حل میشه!!
نشد ،بازم همون خطا!

Sal_64
سه شنبه 04 تیر 1392, 09:41 صبح
با تبدیل فایل به استریم و سپس اتچ کردن اون مشکل حل شد

Sal_64
سه شنبه 04 تیر 1392, 15:22 عصر
دوستان نمونه کد خواسته بودن


void atach(string atach_file1)
{
string name_file = "";
//
FileStream fs;
byte[] ar;
MemoryStream ms;
fs = new FileStream(atach_file1, FileMode.Open, FileAccess.Read);
ar = new byte[fs.Length];
ms = new MemoryStream(ar);
fs.Read(ar, 0, (int)fs.Length);
fs.Close();

name_file = atach_file1.Substring(atach_file1.LastIndexOf("\\") + 1, atach_file1.Length - atach_file1.LastIndexOf("\\") - 1);

mail.Attachments.Add(new Attachment(ms, name_file));
}

barnamenevisjavan
سه شنبه 04 تیر 1392, 15:46 عصر
ممنون من از کد زیر برای ارسال ایمیل استفاده میکنم میشه بگید از کد شما چطوری استفاده کنم؟

public void sendEmail()
{
SmtpServer.Credentials = new Net.NetworkCredential(Trim(My.Settings.ass) + "@yahoo.com", Trim(My.Settings.word));
SmtpServer.Port = "587";
SmtpServer.Host = "smtp.mail.yahoo.com";
mail.From = new MailAddress(Trim(My.Settings.ass) + "@yahoo.com");
mail.To.Add(Trim(My.Settings.too));
mail.Subject = Trim(lblcl.Text + "");
mail.Body = Trim(lblcl.Text);
if (this.TextBox1.Text.Length != 0) {
Attachment mail_att = new Attachment(this.TextBox1.Text);
mail.Attachments.Add(mail_att);
}
SmtpServer.Send(mail);
TextBox1.Text = "";
this.Refresh();
}

Sal_64
سه شنبه 04 تیر 1392, 16:11 عصر
به هر روشی که خودت مایل باشی میشه ازش استفاده کرد
مثلا به جای این دو خط تابع اتچ فراخوانی کنی و به تابع اتچ متغییر email که ساختی به همراه آدرس قایل بفرستی و در همون تابع عمل اتچ اتفاق بیافته

Attachment mail_att = new Attachment(this.TextBox1.Text); mail.Attachments.Add(mail_att);

barnamenevisjavan
سه شنبه 04 تیر 1392, 16:53 عصر
مرسی مشکل حل شد