type=page
status=published
title=create-javamail-resource
next=create-jdbc-connection-pool.html
prev=create-jacc-provider.html
~~~~~~

create-javamail-resource
========================

[[create-javamail-resource-1]][[GSRFM00035]][[create-javamail-resource]]

create-javamail-resource
------------------------

Creates a JavaMail session resource

[[sthref312]]

=== Synopsis

[source]
----
asadmin [asadmin-options] create-javamail-resource [--help]
[--target target] --mailhost hostname
--mailuser username --fromaddress address [--storeprotocol storeprotocol]
[--storeprotocolclass storeprotocolclass] [--transprotocol transprotocol]
[--transprotocolclass transprotocolclass] [--debug={false|true}] [--enabled={true|false}]
[--description resource-description] [--property (name=value)[:name=value]*] jndi-name
----

[[sthref313]]

=== Description

The `create-javamail-resource` subcommand creates a JavaMail session
resource.

This subcommand is supported in remote mode only.

[[sthref314]]

=== Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--target`::
  This option specifies the target for which you are creating the
  JavaMail session resource. Valid values are:
+
  `server`;;
    Creates the resource for the default server instance. This is the
    default value.
  `domain`;;
    Creates the resource for the domain.
  cluster_name;;
    Creates the resource for every server instance in the cluster.
  instance_name;;
    Creates the resource for a particular server instance.
`--mailhost`::
  The DNS name of the default mail server. The connect methods of the
  Store and Transport objects use this value if a protocol-specific host
  property is not supplied. The name must be resolvable to an actual
  host name.
`--mailuser`::
  The name of the mail account user provided when connecting to a mail
  server. The connect methods of the Store and Transport objects use
  this value if a protocol-specific username property is not supplied.
`--fromaddress`::
  The email address of the default user, in the form
  username`@`host`.`domain.
`--storeprotocol`::
  The mail server store protocol. The default is `imap`. Change this
  value only if you have reconfigured the \{product---name}'s mail
  provider to use a non-default store protocol.
`--storeprotocolclass`::
  The mail server store protocol class name. The default is
  `com.sun.mail.imap.IMAPStore`. Change this value only if you have
  reconfigured the \{product---name}'s mail provider to use a nondefault
  store protocol.
`--transprotocol`::
  The mail server transport protocol. The default is `smtp`. Change this
  value only if you have reconfigured the \{product---name}'s mail
  provider to use a nondefault transport protocol.
`--transprotocolclass`::
  The mail server transport protocol class name. The default is
  `com.sun.mail.smtp.SMTPTransport`. Change this value only if you have
  reconfigured the \{product---name}'s mail provider to use a nondefault
  transport protocol.
`--debug`::
  If set to true, the server starts up in debug mode for this resource.
  If the JavaMail log level is set to `FINE` or `FINER`, the debugging
  output will be generated and will be included in the server log file.
  The default value is false.
`--enabled`::
  If set to true, the resource is enabled at runtime. The default value
  is true.
`--description`::
  Text providing some details of the JavaMail resource.
`--property`::
  Optional attribute name/value pairs for configuring the JavaMail
  resource. The \{product---name}-specific ``mail-`` prefix is converted
  to the standard mail prefix. The JavaMail API documentation lists the
  properties you might want to set.

[[sthref315]]

=== Operands

jndi-name::
  The JNDI name of the JavaMail resource to be created. It is a
  recommended practice to use the naming subcontext prefix `mail/` for
  JavaMail resources.

[[sthref316]]

=== Examples

[[GSRFM492]][[sthref317]]

==== Example 1   Creating a JavaMail Resource

This example creates a JavaMail resource named `mail/MyMailSession`. The
JNDI name for a JavaMail session resource customarily includes the
`mail/` naming subcontext.

[source]
----
asadmin> create-javamail-resource --mailhost localhost
--mailuser sample --fromaddress sample@sun.com mail/MyMailSession
Command create-javamail-resource executed successfully.
----

[[sthref318]]

=== Exit Status

0::
  subcommand executed successfully
1::
  error in executing the subcommand

[[sthref319]]

=== See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:delete-javamail-resource.html#delete-javamail-resource-1[`delete-javamail-resource`(1)],
link:list-javamail-resources.html#list-javamail-resources-1[`list-javamail-resources`(1)]


