2010-09-04 2 views
0

с помощью ActiveX Я могу создать экземпляр Outlook и запустить новый HTML e-Mail.Создайте объект Outlook с помощью Firefox

Вот код образца:

вар outlookApp = новый ActiveXObject ("Outlook.Application");

var nameSpace = outlookApp.getNameSpace ("MAPI");

mailFolder = nameSpace.getDefaultFolder (6);

mailItem = mailFolder.Items.add ('IPM.Note.FormA');

mailItem.Subject = "предметный тест";

mailItem.To = "[email protected]";

mailItem.HTMLBody = "<b> полужирный </b >";

mailItem.display (0);

Есть ли эквивалент для Firefox. Например, с XPCom? У кого-нибудь образец, пожалуйста?

Спасибо!

ответ

1
//this class emulates the one u used to use 
function mailer() { 
    this.display = function() { 
    var url = 'mailto:' 
         + this.To 
         + '?subject=' + encodeURIComponent(this.Subject) 
         + '&body=' + encodeURIComponent(this.HTMLBody); 
    window.location = url; 
    } 
} 

//we instantiate 
mailItem = new mailer(); 


//and then your old code: 
mailItem.Subject="a subject test"; 
mailItem.To = "[email protected]"; 
mailItem.HTMLBody = "<b>bold</b>"; 
mailItem.display (0); 

Что делается здесь используется <a>'s mailto: подобный подход:

<a href="mailto:[email protected]?subject=a+subject+test&body=%3Cb%3Ebold%3C/b%3E">email me!</a> 
+0

Вы уже проверили этот код? Я думаю, что это не сработает для Outlook. Тело mailto должно быть в формате plain/text, а не в html. (Определение RFC) Outlook распечатает HTML-код, который можно прочитать. Любые другие решения? – Mimefilt

+0

Я тестировал его, но у меня html отключен на моем thunderbird, поэтому я этого не заметил. Я не могу думать о другом решении, однако я нашел эту страницу: http://www.angelfire.com/dc/html-webmaster/mailto.htm, которая рассказывает об использовании форм с '' mailto: "' action: '< FORM method = "post" action = "mailto: [email protected]" enctype = "text/plain"> 'попробуйте с этим изменением' text/plain' на 'text/html', я не уверен, насколько это стандарт или работает ли он с HTML, но стоит сделать снимок. (вы можете создать временную форму с javascript и отправить ее, но, конечно, сначала попробуйте html, чтобы она работала). – aularon

+0

Спасибо за ваш ответ. «Обычная» ссылка не работает для Outlook. (Он будет работать для ** некоторых ** версий thunderbird, но не для перспективы). Я попробую решение формы в понедельник. – Mimefilt

0

Вот альтернативное решение очень похоже на принятый ответ, если вы используете JQuery и хотели бы расширить ее функциональные возможности выполните это. Так же хорошо, как и другой ответ, но я думал, что выбраю альтернативное решение, которое я использую. До сих пор у меня не было проблем с использованием кросс-браузера. Я не вернулся и попробовал более старые версии IE, но использовал только последнюю версию каждого браузера, чтобы проверить это.

Расширение JQuery, чтобы включить пользовательский функция почтовик

$(function() { 
    $.fn.myMailer = function() { 
     this.display = function() { 
      var url = 'mailto:' + this.To + 
         '?subject=' + encodeURIComponent(this.Subject) + 
         '&body=' + encodeURIComponent(this.HTMLBody); 
      window.location = url; 
      return true; 
     } 
    } 
}); 

Пример использования:

var myMailItem = new $.fn.myMailer(); 
myMailItem.To = '[email protected]'; 
myMailItem.Subject = 'Your Subject'; 
myMailItem.HTMLBody = 'Whatever you want your E-Mail to say'; 
myMailItem.display(0); 

Кроме того, если вы хотите добавить CC или BCC получателей затем следуйте структуре выше, чтобы добавить их в mailto строка запроса.

Я также попытался получить вложения в Outlook, E-Mail на компьютере клиентов

$(function() { 
    $.fn.myMailer = function() { 
     this.display = function() { 
      var url = 'mailto:' + this.To + '?content-type=' + 
         encodeURIComponent('multipart/form-data') + 
         '&subject=' + encodeURIComponent(this.Subject) + 
         '&body=' + encodeURIComponent(this.HTMLBody) + 
         '&attachment=' + encodeURIComponent(this.Attachment); 
      window.location = url; 
      return true; 
     } 
    } 
}); 

мне не удалось с этой попытки. Я не уверен, что это возможно исключительно из-за использования клиентского кода. Я могу ошибаться. Это может также представлять угрозу безопасности, я думаю, если это возможно.

Я бы сказал, что лучше всего использовать скрипты клиентов, чтобы вызывать код на стороне сервера, но вы предпочитаете это делать, и сервер отправляет E-Mail, если это применимо.

Однако мне было необходимо, чтобы вложение было добавлено в электронную почту Outlook, которая всплывала бы на клиентском компьютере, поэтому я все еще разрабатываю окончательные сведения о том, как обрабатывать добавление вложений для моей ситуации. Использование .NET. Я думаю, что должен быть какой-то способ справиться с этим. Я просто не успел реализовать обработчик на стороне сервера, чтобы выполнить его. Если кто-то пытается сделать то же самое, используя .NET. here - хорошая ссылка для начала работы с Outlook 2013 MailItem.