部落冲突怎么发邮件ios邮件信息发送失败

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
问题:下面这段代码网上说app 发生异常闪退的时候会给开发者发送消息,然而出现闪退异常的时候,手机跳转到了苹果原生的邮箱哪里还要填写信息,可不可以发生异常直接自动发短信给开发者呢?不要那么的迂回。。。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
return YES;
void UncaughtExceptionHandler(NSException *exception) {
获取异常崩溃信息
NSArray *callStack = [exception callStackSymbols];
NSString *reason = [exception reason];
NSString *name = [exception name];
NSString *content = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]];
把异常崩溃信息发送至开发者邮件
NSMutableString *mailUrl = [NSMutableString string];
[mailUrl appendString:@"mailto:"];
[mailUrl appendString:@"?subject=程序异常崩溃,请配合发送异常报告,谢谢合作!"];
[mailUrl appendFormat:@"&body=%@", content];
// 打开地址
NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
当然不能了,短信费谁掏啊?真有这功能估计会被骂死吧……
会 crash 是 app 的问题,没理由要求用户主动报告,更不能在后台偷偷发邮件、发短信,苹果也不会给你这种权限的。
直接加一个友盟或者腾讯 Bugly 就可以解决,或者让后台写个自己的接口不就行了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
那你不能用原生自带的,你需要在网上找一个直接写邮箱和密码那种,直接发邮件。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。为什么电子邮件发送失败
  其实当我们发送电子邮件时,收到一封这样的电子邮件,内容如下:  失败原因:连接上对方邮件服务器, 但是在传输完成后被对方服务器拒绝接收。  解决方法:可能是您的邮件中包含了对方拒绝接收的内容, 请修改后重试。  或者是:邮件无法发送到您指定的地址中。在邮件传输过程中由于外部无法避免的错误导致邮件无法送达。  失败原因:连接上对方邮件服务器, 但是对方服务器不接收这个收件人。  解决方法:可能这个收件人并不存在, 或者您的拼写出现了错误, 请核实后重新发送。  那么我们该怎样解决呢?导致电子邮件传送失败的原因是:  1、对方的服务器超时。表示对方的邮件服务器因某种原因未开机或系统出了严重故障。遇到这种情况,一般可以等几天再发一次,或发到对方的另一个地址。  2、发件服务器(SMTP)的故障。SMTP故障无论是在使用注册ISP的SMTP服务器上,还是在使用免费的SMTP服务器上都有可能发生。有的SMTP服务器很不稳定,经常死机,甚至忽然取消了SMTP功能,如果仍使用原先的设置,可能导致邮件无法发送。  3、邮件地址错误。由于电子邮件地址是由各种字符组成的,稍不注意就很容易把英文、数字等字符看错或在电脑上输错,比如将下划线&_&当成连接符&-&,把&.&敲成&。&,将英文的&o&当成阿拉伯数字中的&0&等。  4、电子邮件过大。为了更有效地利用网络资源,ISP往往会限制邮件的大小,并且发送邮件前还需要进行编码,使邮件的大小增加5%~20%。所以在发送超大附件时,最好将它先分割为几个较小的部分,通过几份邮件来发送,这样可以减少发送出错的概率。
最新资讯离线随时看
聊天吐槽赢奖品
相关软件:
大小:405KB
授权:免费
大小:62.41 MB
授权:免费在更新至 iOS 11.0.1 之前,您可能无法通过 Outlook.com、Office 365 或 Exchange 帐户发送电子邮件。
如果您的电子邮件帐户由 Microsoft 在 、Office 365 或运行于 Windows Server 2016 的 Exchange Server 2016 托管,则当您尝试通过 iOS 11 发送电子邮件时,可能会看到这条错误信息:“无法发送邮件。邮件已被服务器拒绝。”
要解决这个问题,请。
有关非 Apple 制造的产品或非 Apple 控制或测试的独立网站的信息仅供参考,不代表 Apple 的任何建议或保证。Apple 对于第三方网站或产品的选择、性能或使用不承担任何责任。Apple 对于第三方网站的准确性和可靠性不作任何担保。互联网的使用具有一定风险。请以了解其他信息。其他公司和产品名称可能是其各自所有公司的商标。导入MessageUI.framework
.h文件中#import&&MessageUI/MessageUI.h&
#import&MessageUI/MFMailComposeViewController.h&
实现&MFMailComposeViewControllerDelegate,&
MFMessageComposeViewControllerDelegate
-(void)showMailPicker {
& &Class&mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if&(mailClass !=nil) {
& & & &&if&([mailClass&canSendMail]) {
[selfdisplayMailComposerSheet];
& & & & & &&UIAlertView&*alert=[[UIAlertView&alloc]&initWithTitle:@""message:@"设备不支持邮件功能"&delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];
& & & & & & [alert&show];
& & & & & & [alert&release];
& & }else{
-(void)displayMailComposerSheet&
MFMailComposeViewController&*picker = [[MFMailComposeViewControlleralloc]&init];
picker.mailComposeDelegate&=self;
[pickersetSubject:@"文件分享"];
// Set up recipients
NSArray&*toRecipients = [NSArrayarrayWithObject:@""];&
NSArray&*ccRecipients = [NSArrayarrayWithObjects:@"",@"",&nil];&
NSArray&*bccRecipients = [NSArrayarrayWithObject:@""];&
[pickersetToRecipients:toRecipients];
[pickersetCcRecipients:ccRecipients];
[pickersetBccRecipients:bccRecipients];
//发送图片附件
//NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"jpg"];
//NSData *myData = [NSData dataWithContentsOfFile:path];
//[picker addAttachmentData:myData mimeType:@"image/jpeg" fileName:@"rainy.jpg"];
//发送txt文本附件
//NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"txt"];
//NSData *myData = [NSData dataWithContentsOfFile:path];
//[picker addAttachmentData:myData mimeType:@"text/txt" fileName:@"MyText.txt"];
//发送doc文本附件&
//NSString *path = [[NSBundle mainBundle] pathForResource:@"MyText" ofType:@"doc"];
//NSData *myData = [NSData dataWithContentsOfFile:path];
//[picker addAttachmentData:myData mimeType:@"text/doc" fileName:@"MyText.doc"];
//发送pdf文档附件
NSString&*path = [[NSBundlemainBundle]&pathForResource:@"CodeSigningGuide"ofType:@"pdf"];
NSData&*myData = [NSDatadataWithContentsOfFile:path];
[pickeraddAttachmentData:myData&mimeType:@"file/pdf"fileName:@"rainy.pdf"];
// Fill out the email body text
NSString&*emailBody =[NSStringstringWithFormat:@"我分享了文件给您,地址是%@",address] ;
[pickersetMessageBody:emailBody&isHTML:NO];
[selfpresentModalViewController:picker&animated:YES];
[pickerrelease];
- (void)mailComposeController:(MFMailComposeViewController*)controller&
& & & & & didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
// Notifies users about errors associated with the interface
switch&(result)
caseMFMailComposeResultCancelled:
NSLog(@"Result: Mail sending canceled");
caseMFMailComposeResultSaved:
& & & & & &NSLog(@"Result: Mail saved");
caseMFMailComposeResultSent:
NSLog(@"Result: Mail sent");
caseMFMailComposeResultFailed:
NSLog(@"Result: Mail sending failed");
NSLog(@"Result: Mail not sent");
[selfdismissModalViewControllerAnimated:YES];
-(void)showSMSPicker{
& &Class&messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
& &&if&(messageClass !=&nil) {&
& &// Check whether the current device is configured for sending SMS messages
& & & &&if&([messageClass&canSendText]) {
& & & & [selfdisplaySMSComposerSheet];
& & & &&else&{
& & & & & &&UIAlertView&*alert=[[UIAlertView&alloc]&initWithTitle:@""message:@"设备不支持短信功能"&delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];
& & & & & & [alert&show];
& & & & & & [alert&release];
&& & & & & &
& &&else&{
-(void)displaySMSComposerSheet
& &MFMessageComposeViewController&*picker = [[MFMessageComposeViewControlleralloc]&init];
picker.messageComposeDelegate&=self;
NSString&*smsBody =[NSStringstringWithFormat:@"我分享了文件给您,地址是%@",address] ;
& & picker.body=smsB
[selfpresentModalViewController:picker&animated:YES];
[pickerrelease];
阅读(...) 评论()iOS开发中捕获程序崩溃日志报告发送至邮件 - 简书
iOS开发中捕获程序崩溃日志报告发送至邮件
iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法。下面就介绍如何在iOS中实现:
在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作
NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);
官方文档介绍:Sets the top-level error-handling function where you can perform last-minute logging before the program terminates.
UncaughtExceptionHandler是一个函数指针,该函数需要我们实现,可以取自己想要的名字。当程序发生异常崩溃时,该函数会得到调用,这跟C,C++中的回调函数的概念是一样的。
实现自己的处理函数
void UncaughtExceptionHandler(NSException *exception) {
NSArray *arr = [exception callStackSymbols];//得到当前调用栈信息
NSString *reason = [exception reason];//非常重要,就是崩溃的原因
NSString *name = [exception name];//异常类型
NSLog(@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr);
以上代码很简单,但是带来的作用是非常大的。
获取到了崩溃的日子,如何发送给开发者呢,目前一般有以下两种方式:
将崩溃信息持久化在本地,下次程序启动时,将崩溃信息作为日志发送给开发者。
通过邮件发送给开发者。 不过此种方式需要得到用户的许可,因为iOS不能后台发送短信或者邮件,会弹出发送邮件的界面,只有用户点击了发送才可发送。 不过,此种方式最符合苹果的以用户至上的原则。
发送邮件代码也很简单:
NSString *crashLogInfo = [NSString stringWithFormat:@"exception type : %@ \n crash reason : %@ \n call stack info : %@", name, reason, arr];
NSString *urlStr = [NSString stringWithFormat:@"mailto://mailto://__@163.com?subject=bug报告&body=感谢您的配合!错误详情:%@",crashLogInfo];
NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
[[UIApplication sharedApplication] openURL:url];
以上就是iOS中捕获异常常用的方法,大家可以不妨一试!
苹果最光辉的时刻,就是砸在牛顿头上,相信自己是最好的,说不准下一个被砸的就是你。
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金 相信有很多...
之前听到朋友面试iOS开发时候,被问到关于已发布程序崩溃的时候怎么处理? 我说很简单吖,友盟还有一些第三方框架都可以帮我们集成、收集到崩溃日志信息;朋友说不是,人家面试官是问这些内部怎么实现的或者让你写你要怎么做? 这个真心没深究过,今天看了下挺有意思的,分享给大家,参考下...
iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法。下面就介绍如何在iOS中实现: 1.在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作 官方文档介绍:Sets the top-level error-...
iOS开发中遇到程序崩溃是很正常的事情,如何在程序崩溃时捕获到异常信息并通知开发者,是大多数软件都选择的方法。下面就介绍如何在iOS中实现: 在程序启动时加上一个异常捕获监听,用来处理程序崩溃时的回调动作NSSetUncaughtExceptionHandler (&Unc...
用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发生了什么? ... Android 获取 View 宽高的常用正确方式,避免为零 - 掘金相信有很多朋友...
康艳。康业,康业的大概思路,源于我一个梦,也是很,觉得大脑里面,一个思路的积累。。很久以来,就想写一部小说。总觉得别人写的小说,思路都非常清晰,给人一种叹为观止的感觉,觉得世上怎么可能有人写出这样的小说呢?。 想说嘛,大概是,两种思路。第一种,根据自己的经验,加上深厚的文字...
之前写过如何利用Google Reader(后面简称GR)阅读海量资讯的系列文章。可是天有不测风云,就在文章写出后没有多久,Google官方就宣布将在日停止GR服务,一直停留在我网站收藏夹的GR网站将会寿终正寝。众多的重度GR使用者甚至联名给Google公...
清晨朦胧起来,强迫症告诉我要去把前几天就想挂上去的钥匙扣挂上去,不然过了这个早上又不知道哪一个月我才会错失机会后悔没有早点动手。 就像这串钥匙扣一样,我经常纠结,矛盾,还有就是后悔。我纠结于对我好但是我没办法喜欢上又舍不得放弃的追求者,我纠结于内心不知道是忘不掉还是过不去的...
我披着棉袄在六月的田野里等待雪落 伏在案上看冰淇淋融化温热 嗅着空气里浮浮沉沉的笔墨 提着菜篮在街上笔直又弯曲地穿过 无聊久了 也曾见过风一吹就停的风车 蜗牛在沙滩上拾到一个二手的壳 玻璃镜上爬满深浅深浅的沟壑 烟草入肺缭绕出晃晃悠悠的泡沫 失眠久了 也会在夜里欣赏你在太阳...
每天晚上吃完饭,我都要和儿子出去散步。 这两天天有点冷,到了晚上说实话我有点不大想出走,但为了给儿子锻练,我还是说:我们该出去散步了。本以为儿子能拒绝,没想到他爽快的答应了。这也是儿子进步的表现呦。刚出门好冷啊,我一直把手揣在口袋里,为了不那么冷,我俩走走跑跑,过了一...}

我要回帖

更多关于 ios 静默发送邮件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信