GMail не будет открывать вложение .txt, созданное приложением iPhone, в зависимости от размера. - PullRequest
1 голос
/ 12 июля 2009

Я создал и отправил короткое электронное письмо с вложением .txt в приложение для iPhone.

  1. Если вложение имеет длину около 10 строк, GMail открывает его очень хорошо.

  2. Если в нем более 20 строк, GMail заклинивает - он не открывает вложение, не загружает вложение и даже не пересылает письмо.

  3. Кроме того, если я отправлю это же письмо своему коллеге, и он откроет его с помощью своего почтового клиента Mac OS, все будет работать нормально.

Например, ниже приведено содержимое текстового файла (эта длина откроется в GMail просто отлично):

ACCELEROMETER READINGS
-0.0724487,-0.941833,-0.235458,2009-07-11 15:18:46 -0700
-0.0724487,-0.941833,-0.271683,2009-07-11 15:18:47 -0700
-0.0724487,-0.923721,-0.253571,2009-07-11 15:18:48 -0700
-0.0543365,-0.923721,-0.326019,2009-07-11 15:18:49 -0700
-0.0724487,-0.959946,-0.181122,2009-07-11 15:18:50 -0700
-0.0543365,-0.923721,-0.253571,2009-07-11 15:18:51 -0700
-0.108673,-0.923721,-0.380356,2009-07-11 15:18:52 -0700
-0.0724487,-0.923721,-0.271683,2009-07-11 15:18:53 -0700

GPS READINGS

HEADING READINGS
211.421,2009-07-11 15:18:46 -0700
206.421,2009-07-11 15:18:49 -0700
184.421,2009-07-11 15:18:50 -0700
195.421,2009-07-11 15:18:51 -0700
198.421,2009-07-11 15:18:53 -0700

Если размер файла в два раза больше, GMail не сможет его обработать, но Mail снова сможет это сделать. Итак, в чем может быть проблема? Я создал письмо следующим образом:

SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init];
testMsg.fromEmail = @"founders@gmail.com";
testMsg.toEmail = @"andrewljohnson@trailbehind.com";
testMsg.relayHost = @"smtp3.webfaction.com";
testMsg.requiresAuth = YES;
testMsg.login = @"andrewljohnson";
testMsg.pass = @"********";
testMsg.subject = @"iPhone Instrument Readings";
testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS!
testMsg.delegate = self;

NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, @"Hey Kevin,\nHere are some GPS readings for you to filter.\n\nLove, \nTrailBehind",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil];
NSData *fileData = [NSData dataWithContentsOfFile:fileName];    
NSDictionary *attached = [NSDictionary dictionaryWithObjectsAndKeys:@"text/directory;\r\n\tx-unix-mode=0644;\r\n\tname=\"readings.txt\"",kSKPSMTPPartContentTypeKey, @"attachment;\r\n\tfilename=\"readings.txt\"",kSKPSMTPPartContentDispositionKey,[fileData encodeBase64ForData],kSKPSMTPPartMessageKey,@"base64",kSKPSMTPPartContentTransferEncodingKey,nil];

testMsg.parts = [NSArray arrayWithObjects:plainPart,attached,nil];
[testMsg send];

Ответы [ 6 ]

1 голос
/ 21 июля 2009

Вы используете [fileData encodeBase64ForData], но я вижу, что есть также функция с именем encodeBase64ForDataWrapped, которая добавляет разрывы строк. Возможно, вам следует вместо этого звонить, и если ваше вложение достаточно длинное, длинная строка base64 кого-то смущает.

1 голос
/ 12 июля 2009

Я друг - я использую pop.gmail.com для получения входящей почты и smtp.gmail.com для исходящей почты через Mail для Mac OS X.

1 голос
/ 12 июля 2009

Я предлагаю вам использовать WireShark , чтобы точно узнать, что отправляется при отправке сообщения. Затем с помощью обычного почтового клиента отправьте то же сообщение (снова в GMail) и посмотрите, в чем разница - а также можно ли загрузить вложение.

Полагаю, что в способе отправки сообщения есть что-то не совсем совместимое, на что GMail жалуется, а SMTP-сервер вашего друга - нет. Скорее всего, это больше связано с сервером, чем с принимающим клиентом, IMO.

Еще одна вещь, которую стоит попробовать - это подключить IMAP-клиент к вашей учетной записи GMail. Тогда вы можете получить вложение?

0 голосов
/ 18 июля 2009

Я все еще думаю, что проблема в том, что у вас есть вложение, помеченное MIME-типом "text / directory", который определен для передачи списков контактов электронной почты. (См. RFC )

Итак, держу пари, что некоторые почтовые клиенты рассматривают вложение .txt с MIME-типом text / directory как простой текстовый файл, а некоторые пытаются сойти с ума, думая, что ваш список GPS-координат действительно набор телефонных номеров или что-то.

Так что попробуйте изменить "text / directory" на "text / plain"!

0 голосов
/ 12 июля 2009

По сути, ваше MIME-приложение подозрительно. Получить спецификацию MIME и дважды проверить это. Если я правильно помню, у вас не должно быть \ r \ n после точки с запятой, так как CRNL имеет определенное значение разграничения. Я давно не смотрел MIME-спецификацию, так что вы можете быть в порядке. Это только то, с чего я бы начал.

Попробуйте прикрепить как обычный текстовый файл вместо файла в каталоге во вложении. Кроме того, мне странно, что у вашего имени каталога есть суффикс .txt. Интересно, это сбивает с толку почтовый сервер rx.

Помните, что каждый почтовый сервер имеет разные уровни точности в отношении того, какие вложения могут анализироваться. Возможно, вам придется обойти их ограничения.

0 голосов
/ 12 июля 2009

Рассматривали ли вы загрузку данных на сервер и затем предоставление пользователю ссылки на файл в электронном письме? Я знаю, что это будет довольно существенным отклонением от вашего нынешнего подхода и требует наличия сервера - но я думаю, что файлы истории GPS и акселерометра могут стать довольно большими, и как пользователь, я бы не хотел, чтобы они забивали мой почтовый ящик!

Возможно, это также лучший способ обойти проблемы с большими вложениями - я знаю, что размер размера вложений зависит от хоста электронной почты, но в моей школе он составляет 4 МБ ...

Удачи!

...