-
Notifications
You must be signed in to change notification settings - Fork 0
/
TSSActivityMail.swift
137 lines (76 loc) · 3.21 KB
/
TSSActivityMail.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
//
// TSSActivityMail.swift
// TrialActivityViewControllerMail3
//
// Created by Daniel Brower on 5/26/17.
// Copyright © 2017 Texarkana Software Solutions. All rights reserved.
//
import UIKit
import MessageUI
class TSSActivityMail: UIActivity, MFMailComposeViewControllerDelegate {
var activityItem: Any?
let mailComposeViewController = MFMailComposeViewController()
override init() {
super.init()
}
// Succeed when activityType is remarked out or when it returns nil.
override var activityType: UIActivityType? {
get {
return UIActivityType.mail
}
}
override var activityTitle: String? {
get {
return "Mail"
}
}
override var activityImage: UIImage? {
get {
return UIImage(imageLiteralResourceName: "email.png")
}
}
override func canPerform(withActivityItems activityItems: [Any]) -> Bool {
// !!! Perform checks.
return true
}
override func prepare(withActivityItems activityItems: [Any]) {
activityItem = activityItems[0] // $$$ as! String
mailComposeViewController.mailComposeDelegate = self
let filename = "file.txt"
mailComposeViewController.setSubject("subject")
mailComposeViewController.setMessageBody("Message body.", isHTML: false)
let content = activityItem as! String // $$$ ('as! String' was added)
let length = content.lengthOfBytes(using: String.Encoding.utf8)
let outputData = NSData(bytes:content, length: length) as Data
mailComposeViewController.addAttachmentData(outputData, mimeType: "plain", fileName: filename)
}
override class var activityCategory: UIActivityCategory {
get {
return UIActivityCategory.action
}
}
override var activityViewController: UIViewController? {
get {
return mailComposeViewController as UIViewController // $$$ ('as UIViewController' was added)
}
}
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
print("TSSActivityMail.mailComposeController(_:_:_:)")
// Check the result or perform other tasks.
print("result.rawValue = \(result.rawValue)")
if let error = error {
print("error.localizedDescription = \(error.localizedDescription)")
self.activityDidFinish(false)
}
else
{
if !(result == MFMailComposeResult.sent) {
self.activityDidFinish(false)
}
else
{
self.activityDidFinish(true)
}
}
}
}