2016-09-26 6 views
0

Как говорится в названии, используя код C# для проекта ASP.Net, я хотел бы открыть почтовый клиент по умолчанию пользователя с помощью сообщения тело уже заполнено определенной информацией.Asp.Net C#, Как открыть почтовый клиент по умолчанию с телом, зарегистрированным с информацией

Я был в состоянии напрямую отправить сообщение с информацией в нем:

private static bool EnvoieCourriel(string adrCourriel, string corps, string objet, string envoyeur, Attachment atache) 
{ 
    SmtpClient smtp = new SmtpClient(); 

    MailMessage msg = new MailMessage 
     { 
      From = new MailAddress(envoyeur), 
      Subject = objet, 
      Body = corps, 
      IsBodyHtml = true 
     }; 

    if (atache != null) 
     msg.Attachments.Add(atache); 

    try 
    { 
     msg.To.Add(adrCourriel); 
     smtp.Send(msg); 
    } 
    catch 
    { 
     return false; 
    } 

    return true; 
} 

Я также был в состоянии открыть электронную почту по умолчанию клиента пользователя:

string email = op.CourrielOperateur1; 
ClientScript.RegisterStartupScript(this.GetType(), "mailto", "parent.location='mailto:" + email + "'", true); 

Но теперь ... Я бы как открыть клиент так же, как второй пример, но тело должно быть уже заполнено текстом по умолчанию ...

Любые идеи были бы оценены.

ответ

4

C# не может сделать это напрямую. В вашем случае вам нужно использовать C# в сочетании с JS, чтобы заставить это работать.

See this Answer

Как описано в RFC 6068, MAILTO позволяет определить предмет и тела, а также куб.см поля. Например:

mailto:[email protected]?subject=Subject&body=message%20goes%20here 

Пользователю не нужно нажать на ссылку, если заставить его открыть с JavaScript

window.location.href = 
"mailto:[email protected]?subject=Subject&body=message%20goes%20here"; 

Имейте в виду, что нет один, стандартный способ, в котором браузеры/адрес электронной почты клиенты обрабатывают ссылки mailto (например, поля субъекта и тела могут быть отброшены предупреждение). Также существует риск того, что всплывающие окна и рекламные блоки, антивирусное программное обеспечение и т. Д. Могут блокировать принудительное открытие почтовых ссылок.

+0

ClientScript.RegisterStartupScript (this.GetType(), "MAILTO", «parent.location = 'mailto: "+ email +"? subject = "+" rappel "+" & body = "+" message% 20goes% 20here "+"' ", true); –

+1

Я использовал это в заднем конце C#, работает очень хорошо, благодаря вам Roe –

0

Вот рабочий пример: ASP-страница:

<tr> 
<td> 
<asp:Label ID="lblEmail" runat="server" Text="Email: "></asp:Label> 
</td> 
<td> 
<asp:hyperlink id="lnkEmail1" runat="server" navigateurl="mailto:[email protected]?subject=MessageTitle&body;=MessageContent" target="" text="" xmlns:asp="#unknown"/> 
</td> 
</tr> 

C#

//call this in !ispostback in page_load 
    protected void BuildEmailAsLink() 
     { 
     //Email is different because we have to make the link clickable. 
     //navigateurl="mailto:[email protected]?subject=MessageTitle&body=MessageContent" 

     var email = lnkEmail1.Text; 

     //Only need to load the email address once on pageload. otherwise reuse it from the UI. 
     if (!string.IsNullOrEmpty(email) && (email.Length > 1) && email.Contains("@")) 
     { 
      //continue; 
     } 
     else 
     { 
      email = lnkEmail1.Text.Trim(); 
     } 

     if (string.IsNullOrEmpty(email) == false) 
     { 
      lnkEmail1.NavigateUrl = lnkEmail1.NavigateUrl.Replace("[email protected]", email); 
      lnkEmail1.NavigateUrl = lnkEmail1.NavigateUrl.Replace("MessageTitle", "Reaching Out"); 
      lnkEmail1.NavigateUrl = lnkEmail1.NavigateUrl.Replace("MessageContent", 
       string.IsNullOrEmpty(lblFirstName.Text.Trim()) == false 
        ? string.Format("Hi {0},", lblFirstName.Text.Trim()) 
        : "Hi,"); 

      lnkEmail1.Text = email; 
      lnkEmail1.Visible = true; 
     } 
    } 
Смежные вопросы