Как я могу послать электронное письмо HTML от Какао?

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

Тогда попробуйте это с хорошим семантически правильным сайтом макета div.

Вы увидите разницу.

Таблицы не являются злом, если данные в них являются табличными, чтобы не разметить страницу.

6
задан Markus Müller-Simhofer 16 July 2009 в 09:45
поделиться

3 ответа

Меня это тоже заинтересовало, так что два дня обратного проектирования Safaris 'Mail Contents of This Page' функции, и я заставил его работать.

UPDATE: Я улучшил код и поместил его на GitHub

- (void)mailWebArchive:(WebArchive *)webArchive title:(NSString *)aTitle URL:(NSString *)aURL {
NSString *bundleID = @"com.apple.mail";
NSData* targetBundleID = [bundleID dataUsingEncoding:NSUTF8StringEncoding];
NSAppleEventDescriptor *targetDescriptor = nil;
NSAppleEventDescriptor *appleEvent = nil;

targetDescriptor = [NSAppleEventDescriptor descriptorWithDescriptorType:typeApplicationBundleID
                                                                   data:targetBundleID];
appleEvent = [NSAppleEventDescriptor appleEventWithEventClass:'mail'
                                                      eventID:'mlpg'
                                             targetDescriptor:targetDescriptor
                                                     returnID:kAutoGenerateReturnID
                                                transactionID:kAnyTransactionID];
[appleEvent setParamDescriptor:[NSAppleEventDescriptor descriptorWithDescriptorType:'tdta'
                                                                               data:[webArchive data]]
                    forKeyword:'----'];
[appleEvent setParamDescriptor:[NSAppleEventDescriptor descriptorWithString:aTitle]
                    forKeyword:'urln'];
[appleEvent setParamDescriptor:[NSAppleEventDescriptor descriptorWithString:aURL]
                    forKeyword:'url '];


NSAppleEventDescriptor *replyDescriptor = nil;
NSAppleEventDescriptor *errorDescriptor = nil;
AEDesc reply = { typeNull, NULL };  

// Send the AppleEvent
OSStatus status = AESendMessage([appleEvent aeDesc],
                    &reply,
                    kAEWaitReply,
                    kAEDefaultTimeout);
if(status == noErr)
{
    replyDescriptor = [[[NSAppleEventDescriptor alloc] initWithAEDescNoCopy:&reply] autorelease];
    errorDescriptor = [replyDescriptor paramDescriptorForKeyword:keyErrorNumber];
    if(errorDescriptor != nil)
        status = [errorDescriptor int32Value];

    if(status != noErr)
        NSLog(@"%s error %d", _cmd, status);
}
}

Этот код не проверяет, работает ли Почта, так что он работает только тогда, когда Почта уже запущена.

Профессиональная сторона этого подхода в том, что он работает со всеми почтовыми клиентами, которые реализуют MailLinkSupported и MailPageSupported. Смотрите QA1722.

Недостатком является то, что вы не можете установить получателей как с почтой на . Для этого Скриптовый мост кажется единственным решением. Смотрите этот измененный образец SBSendEmail.

.
10
ответ дан 8 December 2019 в 18:40
поделиться

Не существует стандартного способа сложных взаимодействий с произвольными почтовыми клиентами. Вам нужно будет заняться каждым приложением, которое вы хотите поддерживать, отдельно и посмотреть, есть ли у него способ установить формат электронной почты - скорее всего, через Applescript - а затем определить, какой является обработчик mailto по умолчанию, и запустить соответствующий код. Для некоторых почтовых клиентов это может быть невозможно (так же, как у некоторых клиентов нет поддерживаемого способа открыть новое электронное письмо с вложением).

3
ответ дан 8 December 2019 в 18:40
поделиться

Вы могли бы использовать substr () и str _ replace () довольно легко:

$str = '1.1.0.1';
$pos = strpos($str,'.');
if ($pos !== false) {
    $str = substr($str,0,$pos+1) . str_replace('.','',substr($str,$pos+1));
}
echo $str;
-121--3279212-

Дастин Бахрах разместил элегантное (но неполное) решение здесь

Ему нужен немного «яблочного» сценария, так что для каждого почтового приложения вам придется создать другой сценарий

Кроме того, необходимо найти пользовательское почтовое приложение по умолчанию, что можно сделать путем создания URL-адреса mailto: , а затем с помощью LaunchServices LSGetStartForURL (): вернуть клиент электронной почты по умолчанию.

0
ответ дан 8 December 2019 в 18:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: