2012-07-29 3 views
0

Tout ce que je veux, c'est envoyer un email avec une image intégrée. Je me bats avec et je ne sais pas pourquoi je ne pouvais pas l'obtenir. Le système envoie cet e-mail, mais sans montrer l'image et voici un aperçu du résultat:Comment envoyer un email avec une image intégrée en utilisant la fonction Mail en C#?

enter image description here

Pourriez-vous s'il vous plaît me aider à modifier le code ci-dessous pour traiter l'envoi de cette image? Supposons que nous avons n'importe quelle image.

code C#:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Send(); 
    } 


    protected void SendEmail(string toAddresses, string fromAddress, string MailSubject, string MessageBody, bool isBodyHtml, AlternateView av) 
    { 
     SmtpClient sc = new SmtpClient("MailAddress"); 
     try 
     { 
      MailMessage msg = new MailMessage(); 
      msg.From = new MailAddress("[email protected]", "Test Sys"); 

      //QuizLink is appSetting inside your web config 
      string newLink = System.Configuration.ConfigurationManager.AppSettings["QuizLink"].ToString(); 


      msg.Bcc.Add(toAddresses); 
      msg.Subject = MailSubject; 
      msg.Body = MessageBody; 
      msg.IsBodyHtml = isBodyHtml; 
      msg.AlternateViews.Add(av); 
      sc.Send(msg); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 

    } 

    protected void SendEmailTOAllUser() 
    { 
     string connString = "Data Source=localhost;Initial Catalog=TestDB;Integrated Security=True"; 

     using (SqlConnection conn = new SqlConnection(connString)) 
     { 
      var sbEmailAddresses = new System.Text.StringBuilder(2000); 
      string quizid = ""; 

      // Open DB connection. 
      conn.Open(); 

      string cmdText = "SELECT MIN (QuizID) As mQuizID FROM dbo.QUIZ WHERE IsSent <> 1"; 
      using (SqlCommand cmd = new SqlCommand(cmdText, conn)) 
      { 
       SqlDataReader reader = cmd.ExecuteReader(); 
       if (reader != null) 
       { 
        while (reader.Read()) 
        { 
         // There is only 1 column, so just retrieve it using the ordinal position 
         quizid = reader["mQuizID"].ToString(); 

        } 
       } 
       reader.Close(); 
      } 

      string cmdText2 = "SELECT Username FROM dbo.employee"; 
      using (SqlCommand cmd = new SqlCommand(cmdText2, conn)) 
      { 
       SqlDataReader reader = cmd.ExecuteReader(); 
       if (reader != null) 
       { 
        while (reader.Read()) 
        { 
         var sName = reader.GetString(0); 
         if (!string.IsNullOrEmpty(sName)) 
         { 
          if (sbEmailAddresses.Length != 0) 
          { 
           sbEmailAddresses.Append(","); 
          } 
          // Just use the ordinal position for the user name since there is only 1 column 
          sbEmailAddresses.Append(sName).Append("@mailAddress.com"); 
         } 
        } 
       } 
       reader.Close(); 
      } 

      string cmdText3 = "UPDATE dbo.Quiz SET IsSent = 1 WHERE QuizId = @QuizID"; 
      using (SqlCommand cmd = new SqlCommand(cmdText3, conn)) 
      { 
       // Add the parameter to the command 
       var oParameter = cmd.Parameters.Add("@QuizID", SqlDbType.Int); 

       var sEMailAddresses = sbEmailAddresses.ToString(); 
       string link = "<a href='http://localhost/test.aspx?testid=" + quizid + "'> Click here to participate </a>"; 
       string body = @"................"; 
       AlternateView av = AlternateView.CreateAlternateViewFromString(body, null, MediaTypeNames.Text.Html); 
       LinkedResource lr = new LinkedResource("contactUs.gif", MediaTypeNames.Image.Gif); 
       lr.ContentId="image1"; 
       av.LinkedResources.Add(lr); 


       int sendCount = 0; 
       List<string> addressList = new List<string>(sEMailAddresses.Split(',')); 
       StringBuilder addressesToSend = new StringBuilder(); 

       if (!string.IsNullOrEmpty(quizid)) 
       { 
        for (int userIndex = 0; userIndex < addressList.Count; userIndex++) 
        { 
         sendCount++; 
         if (addressesToSend.Length > 0) 
          addressesToSend.Append(","); 

         addressesToSend.Append(addressList[userIndex]); 
         if (sendCount == 10 || userIndex == addressList.Count - 1) 
         { 
          SendEmail(addressesToSend.ToString(), "", "........", body, true, av); 
          addressesToSend.Clear(); 
          sendCount = 0; 
         } 
        } 

        // Update the parameter for the current quiz 
        oParameter.Value = quizid; 
        // And execute the command 
        cmd.ExecuteNonQuery(); 
       } 

      } 
      conn.Close(); 
     } 
    } 
+1

bonjour, avez-vous essayez de référencer votre image avec Server.MapPath qui est Server.MapPath (@ "images/contactUs.jpg"); au lieu de ("D: \\ inetpub \\ wwwroot \\ msa \\ PSSP \\ images \\ contactUs.gif"? –

Répondre

0

Tout au long de votre exapmle, il semble que vous envoyez l'image comme celui-ci /somefolder/image.jpg vous ne pouvez pas envoyer de cette façon puisque l'utilisateur est en train de lire l'image d'un autre nom de domaine qui n'est probablement pas le vôtre, donc si vous regardez le code source de votre image, vous verrez qu'il est différent de votre utilisation.

vous devez envoyer le lien d'image comme celui-ci

<img src='http://www.mydomainname.com/fulladdress/someimage.png usemap' ='#clickMap'> 
Questions connexes