Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ссылки в теле письма 
:(
    Опции темы
sharp2005
Дата 23.10.2008, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.8.2007

Репутация: 1
Всего: 1



Есть форма с кнопкой по клику делаю следующее:
Код

private void btnSend_Click(object sender, EventArgs e)
{
     System.Diagnostics.Process.Start("mailto:mail1;mail2&cc=mail3;?subject=subject&body=body");
}

Вопрос: как в тело письма поместить гиперссылки?
Типа как в HTML:
Код

<a href="Ссылка">Имя ссылки</a>

Спасибо.
PM MAIL   Вверх
elbjarn
Дата 23.10.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 13.4.2008
Где: Дубна

Репутация: 1
Всего: 3



Код

Content-Type: text/html;

и далее в body используете любые HTML теги
PM MAIL ICQ   Вверх
sharp2005
Дата 23.10.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.8.2007

Репутация: 1
Всего: 1



Цитата(elbjarn @ 23.10.2008,  11:19)
Код

Content-Type: text/html;

Прошу прощения за тупой вопрос, но в какую часть кода C# это поместить?
PM MAIL   Вверх
elbjarn
Дата 23.10.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 13.4.2008
Где: Дубна

Репутация: 1
Всего: 3



Цитата(sharp2005 @  23.10.2008,  13:25 Найти цитируемый пост)
Прошу прощения за тупой вопрос, но в какую часть кода C# это поместить? 
 
это нужно поместить в заголовок письма. 
письмо, согласно протоколу SMTP, состоит из двух частей: header и body. в header прописывается тип содержимого, кодировка, адресат, отправитель, почтовый клиент, ip адрес отправителя и тд и тп, набор заголовков может быть большим. вот там и надо указать, что тип вашего содержимого - html.
в вашем случае, наверное, как-то так:
Код

System.Diagnostics.Process.Start("mailto:mail1;mail2&cc=mail3;?subject=subject&Content-Type= text/html&body=body");

хотя я так никогда не пробовал отсылать письма. для полноценного составления письма и его отсылки, вам нужно почитать спецификацию протокола SMTP и освоить клиент-серверные технологии в .net (remoting, system.web, sockets). если неохота влезать в это - юзайте готовые компоненты для отсылки smtp сообщений, например
http://www.emailarchitect.net/easendmail/
для asp .net: http://www.exclamationsoft.com/exclamation...p?source=domain
PM MAIL ICQ   Вверх
sharp2005
Дата 23.10.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.8.2007

Репутация: 1
Всего: 1



Делаю так:
Код
string body = "<a href=\"forum.vingrad.ru\">vingrad</a>";
System.Diagnostics.Process.Start("mailto:mail1;mail2&cc=mail3;?subject=subject&Content-Type= text/html&body=" + body);


MS Outlook выдает сообщение об ошибке: Не удается запустить Microsoft Office Outlook. Недопустимый аргумент командной строки. Проверьте используемый параметр.
PM MAIL   Вверх
MasterOfCode
Дата 24.10.2008, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



А текст случайно не нужно передавать в кавычках?


--------------------
user posted image
PM ICQ   Вверх
elbjarn
Дата 24.10.2008, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 13.4.2008
Где: Дубна

Репутация: 1
Всего: 3



пробел уберите между content-type и text/html smile
PM MAIL ICQ   Вверх
sharp2005
Дата 24.10.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.8.2007

Репутация: 1
Всего: 1



Пробел убрал не помогло.
Ругается скорее всего на это \"
Да и теги Outlook не понимает, пробовал тэг переноса:
Код
string body = "Форум<br>Vingrad";
System.Diagnostics.Process.Start("mailto:mail1;mail2&cc=mail3;?subject=subject&Content-Type=text/html&body=" + body);

В теле письма Outlook выдает Форум<br>Vingrad
PM MAIL   Вверх
sharp2005
Дата 27.10.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.8.2007

Репутация: 1
Всего: 1



Нашел вот такой код:
Код

try
{
     // Create the Outlook application.
     Outlook.Application  oApp = new Outlook.Application();

     // Get the NameSpace and Logon information.
     Outlook.NameSpace oNS = oApp.GetNamespace("mapi");

     // Log on by using a dialog box to choose the profile.
     oNS.Logon(Missing.Value, Missing.Value, true, true); 

     // Alternate logon method that uses a specific profile.
     // TODO: If you use this logon method, 
     // change the profile name to an appropriate value.
     //oNS.Logon("YourValidProfile", Missing.Value, false, true); 
            
    // Create a new mail item.
     Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

    // Set the subject.
    oMsg.Subject = "Ссылка на форум Vingrad";

   // Set HTMLBody.
    String sHtml = 
                "<html>\n"+
                "<head>\n"+
                "<title></title>\n" +
                "</head>\n" +
                "<body>\n"+
                "<a href=\"http:\\forum.vingrad.ru\">Форум Vingrad</a>\n"+
                "</body>\n"+
                "</html>";
  
    oMsg.HTMLBody = sHtml;

    // Add a recipient.
    Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;
    // TODO: Change the recipient in the next line if necessary.
    Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add("mail_address");
    oRecip.Resolve();

   // Send.
   oMsg.Send();

   // Log off.
   oNS.Logoff();

   // Clean up.
   oRecip = null;
   oRecips = null;
   oMsg = null;
   oNS = null;
   oApp = null;
}

// Simple error handling.
catch (Exception ex)
{
     Console.WriteLine("{0} Exception caught.", ex);
}  


Здесь тэги работают, но появляются другие проблемы:
  • Работает только с Outlook (пережить можно).
  • Нужно вводить адрес почты вручную, что не применимо, потому что прога будет работать под доменом, где есть соответственно глобальный список адресов. Т.е. нужно окошко со списком адресов, т.к. в Outlook. Возможно ли это? Или меня не в ту сторону занесло?

PM MAIL   Вверх
sharp2005
Дата 27.10.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.8.2007

Репутация: 1
Всего: 1



Всем спасибо, я во всем разобрался smile 
В коде формирую тело письма, использую при этом html тэги (что собственно требовалось), отображаю сформированное сообщение в клиенте MS Outlook, далее все действия с выбором адреса и отправки идут через  Outlook.
Код
try
{
// Create the Outlook application.
Outlook.Application  oApp = new Outlook.Application();

// Get the NameSpace and Logon information.
Outlook.NameSpace oNS = oApp.GetNamespace("mapi");

// Log on by using a dialog box to choose the profile.
oNS.Logon(Missing.Value, Missing.Value, true, true); 

// Alternate logon method that uses a specific profile.
// TODO: If you use this logon method, 
//  change the profile name to an appropriate value.
//oNS.Logon("YourValidProfile", Missing.Value, false, true); 
             
// Create a new mail item.
Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

// Set the subject.
oMsg.Subject = "Ссылка на форум Vingrad";

// Set HTMLBody.
String sHtml = 
                    "<html>\n"+
                    "<head>\n"+
                    "<title></title>\n" +
                    "</head>\n" +
                    "<body>\n"+
                    "<a href=\"http:\\forum.vingrad.ru\">Форум Vingrad</a>\n"+
                    "</body>\n"+
                    "</html>";
                
oMsg.HTMLBody = sHtml;

// Add a recipient.
Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;

// Отобразим сообщение, а отправление сделаем в самом Outlook-е
oMsg.Display(oRecips);

// Log off.
oNS.Logoff();

// Clean up.

oRecips = null;
oMsg = null;
oNS = null;
oApp = null;
}

// Simple error handling.
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}  


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0814 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.