CWBudde / cordova-plugin-smtp-client

Basic SMTP client for editing and sending email messages
5 stars 12 forks source link

Problems when build to iOS #1

Open TiagoSilvaPereira opened 6 years ago

TiagoSilvaPereira commented 6 years ago

Hi, i'm with this problem when trying to build for iOS. It works very well in Android. Searching, i found that it needs a __bridge cast. I don't know what is it, but I think that this article can help: Bridge Cast

/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:44:39: error: cast of Objective-C pointer type 'NSString *' to C pointer type 'CFStringRef' (aka 'const struct __CFString *') requires a bridged cast
    host = CFHostCreateWithName(NULL, (CFStringRef)hostName);
                                      ^~~~~~~~~~~~~~~~~~~~~
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:44:40: note: use __bridge to convert directly (no change in ownership)
    host = CFHostCreateWithName(NULL, (CFStringRef)hostName);
                                       ^
                                       __bridge 
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:44:52: note: use CFBridgingRetain call to make an ARC object available as a +1 'CFStringRef' (aka 'const struct __CFString *')
    host = CFHostCreateWithName(NULL, (CFStringRef)hostName);
                                                   ^
                                                   CFBridgingRetain( )
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:60:25: error: cast of C pointer type 'CFReadStreamRef' (aka 'struct __CFReadStream *') to Objective-C pointer type 'NSInputStream *' requires a bridged cast
        *inputStream = [(NSInputStream *)readStream autorelease];
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:60:26: note: use __bridge to convert directly (no change in ownership)
        *inputStream = [(NSInputStream *)readStream autorelease];
                         ^
                         __bridge 
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:60:42: note: use CFBridgingRelease call to transfer ownership of a +1 'CFReadStreamRef' (aka 'struct __CFReadStream *') into ARC
        *inputStream = [(NSInputStream *)readStream autorelease];
                                         ^
                                         CFBridgingRelease( )
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:60:53: error: 'autorelease' is unavailable: not available in automatic reference counting mode
        *inputStream = [(NSInputStream *)readStream autorelease];
                                                    ^
In module 'Foundation' imported from /users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.h:34:
In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
In module 'Dispatch' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h:15:
In module 'os' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/include/dispatch/dispatch.h:48:
In module 'ObjectiveC' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/include/os/object.h:75:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/include/objc/NSObject.h:38:1: note: 'autorelease' has been explicitly marked unavailable here
- (instancetype)autorelease OBJC_ARC_UNAVAILABLE;
^
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:60:53: error: ARC forbids explicit message send of 'autorelease'
        *inputStream = [(NSInputStream *)readStream autorelease];
                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:71:26: error: cast of C pointer type 'CFWriteStreamRef' (aka 'struct __CFWriteStream *') to Objective-C pointer type 'NSOutputStream *' requires a bridged cast
        *outputStream = [(NSOutputStream *)writeStream autorelease];
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:71:27: note: use __bridge to convert directly (no change in ownership)
        *outputStream = [(NSOutputStream *)writeStream autorelease];
                          ^
                          __bridge 
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:71:44: note: use CFBridgingRelease call to transfer ownership of a +1 'CFWriteStreamRef' (aka 'struct __CFWriteStream *') into ARC
        *outputStream = [(NSOutputStream *)writeStream autorelease];
                                           ^
                                           CFBridgingRelease( )
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:71:56: error: 'autorelease' is unavailable: not available in automatic reference counting mode
        *outputStream = [(NSOutputStream *)writeStream autorelease];
                                                       ^
In module 'Foundation' imported from /users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.h:34:
In module 'CoreFoundation' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:6:
In module 'Dispatch' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/System/Library/Frameworks/CoreFoundation.framework/Headers/CFStream.h:15:
In module 'os' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/include/dispatch/dispatch.h:48:
In module 'ObjectiveC' imported from /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/include/os/object.h:75:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.2.sdk/usr/include/objc/NSObject.h:38:1: note: 'autorelease' has been explicitly marked unavailable here
- (instancetype)autorelease OBJC_ARC_UNAVAILABLE;
^
/users/usuario/king_projects/comprador-mobile/platforms/ios/Comprador/Plugins/cordova-plugin-smtp-client/NSStream+SKPSMTPExtensions.m:71:56: error: ARC forbids explicit message send of 'autorelease'
        *outputStream = [(NSOutputStream *)writeStream autorelease];
                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
CWBudde commented 6 years ago

I have tried to update the plugin from code I found elsewhere, but in the end I did not succeed. As I left it as such, the code does not compile anymore at the moment.

I guess I should revert it back to an older version, which was more or less working.

A yet unsolved problem is the fact that emails with large attachment keep crashing the app and the emails do not display correctly in some email programs.

For that reason I switched to the cordova-plugin-mailcore2 for iOS. It yet misses the android part, but it shouldn't be too hard to add that as well.

CWBudde commented 6 years ago

Please try again with the last commit (21b9c92193598856bec9d3ae851038a99a757616). It should work again, but still with the problems mentioned above

TiagoSilvaPereira commented 6 years ago

Thank you @CWBudde I'll try it now

TiagoSilvaPereira commented 6 years ago

Hi @CWBudde now I've this problem when trying to install the plugin:

Error during processing of action! Attempting to revert...
Failed to install 'cordova-plugin-smtp-client': CordovaError: Uh oh!
"/users/usuario/king_projects/comprador-mobile/plugins/cordova-plugin-smtp-client/src/ios/SMTPLibrary/Base64Transcoder.c" not found!
    at copyFile (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/lib/plugman/pluginHandlers.js:319:36)
    at copyNewFile (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/lib/plugman/pluginHandlers.js:351:5)
    at installHelper (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/lib/plugman/pluginHandlers.js:269:13)
    at install (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/lib/plugman/pluginHandlers.js:35:13)
    at Object.process (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/node_modules/cordova-common/src/ActionStack.js:56:25)
    at PluginManager.doOperation (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/node_modules/cordova-common/src/PluginManager.js:117:20)
    at PluginManager.addPlugin (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/node_modules/cordova-common/src/PluginManager.js:147:17)
    at Api.addPlugin (/users/usuario/king_projects/comprador-mobile/platforms/ios/cordova/Api.js:235:10)
    at handleInstall (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:619:6)
    at /usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/install.js:379:28
Error: Uh oh!
"/users/usuario/king_projects/comprador-mobile/plugins/cordova-plugin-smtp-client/src/ios/SMTPLibrary/Base64Transcoder.c" not found!
CWBudde commented 6 years ago

I guess the uninstallation didn't work perfectly. There seems to be still a reference to that .c file (which was previously an obj-c file [with the extension .m]).

Since I don't have a mac at hand at the moment I can't test myself, but as far as I remember this version used to work.

TiagoSilvaPereira commented 6 years ago

I'll delete de plugin manually and try to reinstall it. Thank you very much @CWBudde

TiagoSilvaPereira commented 6 years ago

Same error. It can't be installed.

aqibmapari commented 6 years ago

this one is fixed as well with the latest commit. I think you can close this issue.