PDA

View Full Version : حرفه ای: ارسال ایمیل html در سی شارپ



رامین مرادی
سه شنبه 28 فروردین 1397, 15:11 عصر
با سلام.
دوستان من با سی شارپ ایمیل ارسال میکنم. ایمیل html رو با موفقیت ارسال میکنم. اما یه مشکلی که هست اینه که اگه متن داخلش عکس باشه تصویر تو ایمیل دیده نمیشه.متن ایمیل به صورت زیر ارسال میشه:




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><META content="text/html; charset=unicode" http-equiv=Content-Type><META name=GENERATOR content="MSHTML 11.00.10570.1001"></HEAD><BODY><P>this is test <STRONG><FONT color=lime>Text</FONT></STRONG> .</P><P><IMG src="C:\Users\ramin\Desktop\1.jpg"></P></BODY></HTML>



ولی خب چون این آدرس ( <IMG src="C:\Users\ramin\Desktop\1.jpg"> )محلی سیستم منه تو ایمیل این تصویر دیده نمیشه. ممنون میشم راهنمایی کنید در این مورد.:متفکر:

اینم روش ارسال منه با ایمیل


try
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(txtSmtpServer.Text);
mail.From = new MailAddress("ramin.mor47@gmail.com","شرکت تست");
mail.To.Add(txtTo.Text);
mail.Subject = txtSubject.Text;
mail.IsBodyHtml = true;
mail.Body = htmlEditor1.Html;
Attachment at = new Attachment(@"C:\Users\ramin\Desktop\Book1.xlsx");
mail.Attachments.Add(at);
//mail.Attachments=
SmtpServer.Port =int.Parse(txtPortServer.Text) ;
SmtpServer.Credentials = new System.Net.NetworkCredential(txtUserServer.Text, txtPasswordServer.Text);
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
MessageBox.Show("mail Send");
txtSubject.Text = htmlEditor1.Html;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

Mahmoud Zaad
پنج شنبه 30 فروردین 1397, 09:31 صبح
سلام
الان مشکل مشخص نیست، یعنی شما می خواید عکس رو از یک آدرس محلی ارسال کنید؟ خب قاعدتا نمیشه و باید روی اینترنت باشه. اگه مشکل این نیست که بیشتر توضیح بدید.

رامین مرادی
پنج شنبه 30 فروردین 1397, 11:46 صبح
سلام
الان مشکل مشخص نیست، یعنی شما می خواید عکس رو از یک آدرس محلی ارسال کنید؟ خب قاعدتا نمیشه و باید روی اینترنت باشه. اگه مشکل این نیست که بیشتر توضیح بدید.

آره دقیقا مشکلم اینه. یه ویرایشگر متن دارم که میشه تو متن هم عکس گذاشت . حالا وقتی کاربر متنی تایپ میکنه ممکنه تصویری رو هم درج کنه . مشکل من همینه. که چطوری تصویر داخل متن رو هم بشه ارسال کرد.

Mahmoud.Afrad
پنج شنبه 30 فروردین 1397, 14:32 عصر
چه ویرایشگری استفاده میکنید؟

رامین مرادی
شنبه 01 اردیبهشت 1397, 08:57 صبح
چه ویرایشگری استفاده میکنید؟با کامپوننت آماده YARTE که خروجی اچ تی ام ال هم میده.اگه نداشتین بفرمایید براتون ارسال کنم.

danialafshari
شنبه 01 اردیبهشت 1397, 11:32 صبح
آره دقیقا مشکلم اینه. یه ویرایشگر متن دارم که میشه تو متن هم عکس گذاشت . حالا وقتی کاربر متنی تایپ میکنه ممکنه تصویری رو هم درج کنه . مشکل من همینه. که چطوری تصویر داخل متن رو هم بشه ارسال کرد.
با سلام
وقتی شما از عکس استفاده میکنید تگ IMG رو ایجاد میکنه و دریافت عکسش هم بوسیله Inputbox هست، یعنی URL اینترنتی باید بهش بدید! اگر منظورش Open کردن عکس از PC بود خب بجای Inputbox از OpenFileDialog استفاده میکرد
موفق باشید

رامین مرادی
شنبه 01 اردیبهشت 1397, 12:53 عصر
با سلام
وقتی شما از عکس استفاده میکنید تگ IMG رو ایجاد میکنه و دریافت عکسش هم بوسیله Inputbox هست، یعنی URL اینترنتی باید بهش بدید! اگر منظورش Open کردن عکس از PC بود خب بجای Inputbox از OpenFileDialog استفاده میکرد
موفق باشید
پس راهی نیست برا این مورد مگه اینکه خودم تو کد اچ تی ام ال قبل از ارسال سرچ کنم و تمام عکسهارو بگیرم و در یه هاست شخصی آپلود کنم. و لینک مستقیم رو بجای آدرس محلی فایل بنویسم. این روش درسته؟

Mahmoud.Afrad
شنبه 01 اردیبهشت 1397, 13:35 عصر
لینک زیر را ببینید
https://en.wikipedia.org/wiki/Data_URI_scheme

تست کنید اگر جواب داد ، میتونید سورس ادیتور را طوری تغییر بدید که به جای لینک، دیتا قرار بده.

رامین مرادی
شنبه 01 اردیبهشت 1397, 15:02 عصر
لینک زیر را ببینید
https://en.wikipedia.org/wiki/Data_URI_scheme

تست کنید اگر جواب داد ، میتونید سورس ادیتور را طوری تغییر بدید که به جای لینک، دیتا قرار بده.

جالبه حتما تستش میکنم. فقط یه مورد من با regix تا حالا کار نکردم چطور میتونم تگ های img رو بگیرم .البته کل تگ همراه با مسیر فایل.

رامین مرادی
شنبه 01 اردیبهشت 1397, 15:14 عصر
یکی پیدا کردم گفتم بزارم دوستان هم استفاده کنن برای پیدا کردن تگ های خاص در رشته های html


private void button4_Click(object sender, EventArgs e)
{
var a = GetImagesInHTMLString("<html><head></head><body><div><img src ='c:\\newfolder\\a.jpg' /><div><img src ='c:\\newfolder\\b.jpg' /><img src ='c:\\newfolder\\c.jpg'/></div></div><img src ='c:\\newfolder\\d.jpg'/></body></html>");
foreach (var item in a)
{
MessageBox.Show(item.ToString());
}

}
private List<string> GetImagesInHTMLString(string htmlString)
{
List<string> images = new List<string>();
string pattern = @"<(img)\b[^>]*>";


Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = rgx.Matches(htmlString);


for (int i = 0, l = matches.Count; i < l; i++)
{
images.Add(matches[i].Value);
}


return images;
}