Swift 将表单作为 PDF 发送到电子邮件

Posted

技术标签:

【中文标题】Swift 将表单作为 PDF 发送到电子邮件【英文标题】:Swift send a form to an email as a PDF 【发布时间】:2021-11-21 16:31:50 【问题描述】:

我在编码方面非常新,我只想制作一个小应用程序,其中有一个表格和一个发送按钮,如果你填写表格,所有数据都应该作为 pdf 格式并发送到电子邮件。我现在只有表格和名称,但我怎样才能将数据发送到电子邮件。最重要的一点是它是一个 pdf 文件。

import SwiftUI

struct ContentView: View 

//    Tour Daten
    @State private var tournummer = ""
//    Fahrer Daten
    @State private var fahrernachname = ""
    @State private var fahrervorname = ""
    @State private var fahrergeburtstag = Date()
//    Kunden Daten
    @State private var kundenachname = ""
    @State private var kundevorname = ""
    @State private var kundegeburtstag = Date()
//    Fahrzeug Daten
    @State private var kilometerstand = ""
//    Ausstattung
    @State private var warnweste = false
    @State private var anzahlschlüßel = 1
    @State private var bereifung = "Winterreifen"
    
    var body: some View 
        NavigationView
        Form 
            
//            Auftragsinformationen
            Section(header:  Text("Auftrags informationen"))
                TextField("Tour Nummer", text: $tournummer)
            
            
//            Fahrer Daten
            Section(header:  Text("Fahrer Daten"))
                TextField("Nachname", text: $fahrernachname)
                TextField("Vorname", text: $fahrervorname)
                DatePicker("Geburtstag", selection: $fahrergeburtstag, displayedComponents: .date)
            

//            Kunden Daten
            Section(header:  Text("Kunden Daten"))
                TextField("Nachname", text: $kundenachname)
                TextField("Vorname", text: $kundevorname)
                DatePicker("Geburtstag", selection: $kundegeburtstag, displayedComponents: .date)
            

//            Fahrzeug Daten
            Section(header: Text("Fahrzeug Daten"))
                TextField("Kilometerstand", text: $kilometerstand)


            
            
//            Ausstattung
            Section(header: Text("Ausstattung"))
                
                Toggle("Warnweste Vorhanden", isOn: $warnweste)
                
                Stepper("Schlüßel: \(anzahlschlüßel)", value: $anzahlschlüßel, in: 1...5)
                
                Picker(
                    selection: $bereifung,
                    label: Text("Bereifung:"),
                    content: 
                    Text("Winterreifen").tag("Winterreifen")
                    Text("Sommerreifen").tag("Sommerreifen")
                    Text("Allwetterreifen").tag("Allwetterreifen")
                       )

            
            
//            Fahrzeug Bilder
            Section(header: Text("Fahrzeug Fotos"))
                Text("fotos hier einfügen omar muss googlen wie das geht hahaha")
            
        
//            Hilfe und Service (in den footer legen!!!)
            Section(header: Text("Hilfe und Service"))
                Link("..-Logistik Webseite", destination: URL(string: "https://www.logistik....de")!)
            
            
            Section(header: Text("®..-Logistik"))
            
            
            
//            (Form ende) Nav Bar
            .navigationTitle("MM-Logistik Protokoll")
            .toolbar 
                ToolbarItemGroup(placement: .navigationBarTrailing)
                    Button
                        hideKeyboard()
                     label: 
                        Image(systemName:"chevron.down")
                    
                
            
        
    

struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        ContentView()
            .preferredColorScheme(.dark)
.previewInterfaceOrientation(.portrait)
    


//  Keyboard Hide
#if canImport(UIKit)
extension View
    func hideKeyboard()
        UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    

#endif

【问题讨论】:

看看这个 SO 帖子:***.com/questions/56784722/swiftui-send-email 【参考方案1】:

这是一个例子。您可以根据需要进行修改;

   let sharingService = NSSharingService(named: NSSharingService.Name.composeEmail)
  
    sharingService?.subject = "your subject field"
    var items = [Any]()
   
    items.append(variableWithYourFormDataAsString) // you can add more items
    sharingService?.perform(withItems: items)
   
   

【讨论】:

在范围内找不到“NSSharingService”我该怎么办? 在文件顶部添加 import Cocoa

以上是关于Swift 将表单作为 PDF 发送到电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中将特定 PDF 附加到电子邮件中?

关于如何使用从其电子表格的html表单接收的数据创建pdf并通过电子邮件发送pdf文件的Google应用程序脚本

如何在PDF申请表单上进行电子签名

Swift - 如何将 SwiftValidator 集成到我的项目中

如何使用 PHP 邮件功能将 PDF 附加到电子邮件

从没有php的html表单发送电子邮件[关闭]