السلام عليكم، لدي صفحة بإسم (SelectCard.aspx) فيها مجموعة من الصور، هذه الصور مُخزنة في قاعدة البيانات محفوظة على شكل مسار الصورة (مكان الصورة الفيزيائي ضمن ملفات المشروع file path)، ولدى كل صورة معرف id خاص بها، وهذه الصور معروضة في صفحة (SelectCard.aspx) بإستخدام GridView، وتحت كل صورة Link وهذا الكود الخاص به: <asp:HyperLink ID="HyperLink1" runat="server" Text="Detailed / Edit" NavigateUrl='<%# Eval("Card_id", "~/send-card.aspx?Id={0}") %>'>Select Card</asp:HyperLink>وهذا الكود الخاص بالصورة نفسها: <asp:Image ID="Image1" runat="server" Height="194px" Width="188px" ImageUrl='<%# Eval("Card_Path") %>' />عندما يتم الضغط على الرابط، يتم التحول الى صفحة ثانية اسمها (send-card.aspx)، ويتم عرض txtbox فيه الـID الخاص بالصورة، وهنالك txtbox فيه امكانية كتابة ايميل الشخص المرسل له، وايضاً يتم عرض Image Control فيه الصورة نفسها التي اختارها الشخص من الصفحة الاولى، وهنالك textbox = multiline يتم كتابة رسالة فيه، وآخيراً هنالك زر للارسال. الان كل شيء يعمل عندما اكتب إيميل الشخص والرسالة، ولكن الصورة التي هي موجودة في الـImage Control لا يتم ارسالها، بعد بحث في الانترنت علمت انه يجب عمل Attachment، وهذا الـ(attachment) يحتاج الى مسار الصورة المُختارة أو المعروضة في الـImage Control .. ولكن حاولت بكل الطرق جلب مسار الصورة، يعني أريد مسار الصورة الموجوة في صندوق الصورة لكي أضعه داخل attachment ، لا اعرف كيف استخرجه. هذا الكود (سي شارب) الخاص بصفحة send-card لكي يتضح الامر.. public partial class send_card : System.Web.UI.Page
{
// Creating connection
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["eg"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
// Getting ID number from selected card and pass it to ID textbox
txt_id.Text = Request.QueryString["id"].ToString();
// Open connection
conn.Open();
// Selecting the specific image based on the retrieved id number from the textbox
SqlCommand cmd = new SqlCommand("Select * from Cards where Card_ID ='" + txt_id.Text + "'", conn);
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
SelectedImg.ImageUrl = dr["Card_Path"].ToString();
}
conn.Close();
}
// A method which used to created AlertBox
public void AlertBox(string msg)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<script type = 'text/javascript'>");
sb.Append("window.onload=function(){");
sb.Append("alert('");
sb.Append(msg);
sb.Append("')};");
sb.Append("</script>");
ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
}
protected void btn_send_Click(object sender, EventArgs e)
{
// Open connection
conn.Open();
// ******************** Code for sending the mail
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.To.Add(email2.Text);
mail.From = new MailAddress("abuhussam@mymail.com", "E-Greetings", System.Text.Encoding.UTF8);
mail.Subject = "E-Greetings from :" + email2.Text;
mail.SubjectEncoding = System.Text.Encoding.UTF8;
//mail.Attachments.Add(new Attachment(SelectedImg.ImageUrl));
mail.Body = "Dear User," + "<br><br>" + "You have received one new mail greeeting from E-Greetings Service." + "<br>" + "Your friend message showing as below:" + "<br><br><br>" + txt_body.Text + "<br><br>" + "<br><br>" + "Thanks & Regards," + "<br>" + "E-Greetings(Admin)";
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential("abuhussam@mymail.com", "aa2132e"); // Enter the pwd instead
client.Port = 25;
client.Host = "mail.sharewaretech.com";
client.EnableSsl = false;
client.Send(mail);
// **************** Code for storing the data inside the database
Response.Write("<script language='javascript'>window.alert('Mail Sent Successfully<br>click OK to select another card.');window.location='SelectCard.aspx';</script>");
}
}ستلاحظ أنني وضعت الكود : //mail.Attachments.Add(new Attachment(SelectedImg.ImageUrl));
في تعليق لكي لا يتأثر الكود الاصلي، الان بدل كتابة (SelectedImg.ImageUrl) يجب علي كتابة مسار الصورة الموجودة في الImage Control ، وهذه ممكن تكون اكثر من صورة لانهم مخزنين في قاعدة البيانات، فأنا ليس من المعقول ان اعطي مسار صورة واحدة ((بالتحديد))، لذلك علي استخراج المسار من الصورة المختارة من الصفحة الاولى، يعني الصورة الموجودة في الImage Control لانها تم استخراجها من الصفحة الاولى، وأخذ المسار الخاص بها ووضعه في مكان (SelectedImg.ImageUrl). أتمنى أن الفكرة والمشكلة والسؤال وصل مفهوم، أتمنى المساعدة، واسف على الاطالة.. أرجو المساعدة في إيجاد حل المشكلة، شكراً لكم كثيراً ..